Newer
Older
dmpopidor / test / unit / language_test.rb
require 'test_helper'

class LanguageTest < ActiveSupport::TestCase
  
  def setup
    @lang = Language.find_by(abbreviation: I18n.locale)
    @user = User.first
    @org = @user.org
  end
  
  # ---------------------------------------------------
  test "required fields are required" do
    assert_not Language.new.valid?
    assert_not Language.new(name: 'Klingon').valid?
    assert_not Language.new(name: 'Klingon', description: 'Klingon', default_language: true).valid?
    
    assert Language.new(abbreviation: 'klgn').valid?
    assert Language.new(abbreviation: 'klgn', name: 'Klingon', description: 'Klingon', default_language: true).valid?
  end
  
  # ---------------------------------------------------
  test "abbreviation must be unique" do
    assert_not Language.new(abbreviation: Language.first.abbreviation).valid?
  end
  
  # ---------------------------------------------------
  test "can CRUD" do
    lang = Language.create(abbreviation: 'kg', name: 'Klingon')
    assert_not lang.id.nil?, "was expecting to be able to create a new Language : #{lang.errors.collect{ |e| e }.join(', ')}"

    lang.name = 'Imperial Klingon'
    lang.save!
    assert_equal 'Imperial Klingon', lang.reload.name, "was expecting the name to have been updated!"

    assert lang.destroy!, "Was unable to delete the Language!"
  end

  # ---------------------------------------------------
  test "can manage has_many relationship with Users" do
    verify_has_many_relationship(Language.last, User.last, Language.last.users.count)
  end

  # ---------------------------------------------------
  test "can manage has_many relationship with Organisations" do
    org = Org.create(name: 'testing', abbreviation: "TEST", links: {"org":[]})
    verify_has_many_relationship(Language.last, org, Language.last.orgs.count)
  end

end