qualifier_test.rb 2.28 KB
# encoding: UTF-8
require_relative "../test_helper"

class QualifierTest < ActiveSupport::TestCase

  should 'environment is mandatory' do
    qualifier = Qualifier.new(:name => 'Qualifier without environment')
    assert !qualifier.valid?

    qualifier.environment = fast_create(Environment)
    assert qualifier.valid?
  end

  should 'belongs to environment' do
    env_one = fast_create(Environment)
    qualifier_from_env_one = env_one.qualifiers.create(:name => 'Qualifier from environment one')

    env_two = fast_create(Environment)
    qualifier_from_env_two = env_two.qualifiers.create(:name => 'Qualifier from environment two')

    assert_includes env_one.qualifiers, qualifier_from_env_one
    assert_not_includes env_one.qualifiers, qualifier_from_env_two
  end

  should 'name is mandatory' do
    env_one = fast_create(Environment)
    qualifier = env_one.qualifiers.build
    assert !qualifier.valid?

    qualifier.name = 'Qualifier name'
    assert qualifier.valid?
  end

  should 'sort by name' do
    last = fast_create(Qualifier, :name => "Zumm")
    first = fast_create(Qualifier, :name => "Atum")
    assert_equal [first, last], Qualifier.all.sort
  end

  should 'sorting is not case sensitive' do
    first = fast_create(Qualifier, :name => "Aaaa")
    second = fast_create(Qualifier, :name => "abbb")
    last = fast_create(Qualifier, :name => "Accc")
    assert_equal [first, second, last], Qualifier.all.sort
  end

  should 'discard non-ascii char when sorting' do
    first = fast_create(Qualifier, :name => "Áaaa")
    last = fast_create(Qualifier, :name => "Aáab")
    assert_equal [first, last], Qualifier.all.sort
  end

  should 'clean all ProductQualifier when destroy a Qualifier' do
    product1 = fast_create(Product)
    product2 = fast_create(Product)
    qualifier = fast_create(Qualifier, :name => 'Free Software')
    certifier = fast_create(Certifier, :name => 'FSF')
    ProductQualifier.create!(:product => product1, :qualifier => qualifier, :certifier => certifier)
    ProductQualifier.create!(:product => product2, :qualifier => qualifier, :certifier => certifier)
    assert_equal [['Free Software', 'FSF']], product1.product_qualifiers.map{|i| [i.qualifier.name, i.certifier.name]}
    Qualifier.destroy_all
    assert_equal [], product1.product_qualifiers(true)
  end
end