diff --git a/app/models/qualifier.rb b/app/models/qualifier.rb index 014a8a8..64865bd 100644 --- a/app/models/qualifier.rb +++ b/app/models/qualifier.rb @@ -8,4 +8,6 @@ class Qualifier < ActiveRecord::Base validates_presence_of :environment_id validates_presence_of :name + has_many :product_qualifiers, :dependent => :destroy + end diff --git a/test/factories.rb b/test/factories.rb index 1416b5a..78c4922 100644 --- a/test/factories.rb +++ b/test/factories.rb @@ -358,7 +358,9 @@ module Noosfero::Factory # Certifier ############################################### - alias :defaults_for_certifier :defaults_for_qualifier + def defaults_for_certifier + defaults_for_qualifier.merge({ :name => 'Certifier ' + factory_num_seq.to_s }) + end ############################################### # Scrap diff --git a/test/unit/manage_products_helper_test.rb b/test/unit/manage_products_helper_test.rb index 6c3d7dc..e5b5467 100644 --- a/test/unit/manage_products_helper_test.rb +++ b/test/unit/manage_products_helper_test.rb @@ -137,6 +137,38 @@ class ManageProductsHelperTest < Test::Unit::TestCase assert_equal 'LINK', edit_ui_button('link to edit', {:action => 'add_input', :id => product.id}) end + should 'list qualifiers and certifiers of a product' do + product = fast_create(Product) + qualifier = fast_create(Qualifier) + certifier = fast_create(Certifier) + ProductQualifier.create!(:product => product, :qualifier => qualifier, :certifier => certifier) + assert_match /✔ Qualifier \d+ certified by Certifier \d+/, display_qualifiers(product) + end + + should 'product survive to a Qualifier deletation' do + product = fast_create(Product) + qualifier = fast_create(Qualifier) + certifier = fast_create(Certifier) + ProductQualifier.create!(:product => product, :qualifier => qualifier, :certifier => certifier) + qualifier.destroy + assert_nothing_raised do + assert_no_match /✔ Qualifier \d+ certified by Certifier \d+/, display_qualifiers(product) + end + end + + should 'product consider its Qualifier self-declared when Certifier is deleted' do + product = fast_create(Product) + qualifier = fast_create(Qualifier) + certifier = fast_create(Certifier) + ProductQualifier.create!(:product => product, :qualifier => qualifier, :certifier => certifier) + certifier.destroy + assert_nothing_raised do + result = display_qualifiers(product) + assert_match /✔ Qualifier \d+ \(Self declared\)/, result + assert_no_match /certified by Certifier \d+/, result + end + end + protected include NoosferoTestHelper include ActionView::Helpers::TextHelper diff --git a/test/unit/qualifier_test.rb b/test/unit/qualifier_test.rb index 22b06dd..8625c8f 100644 --- a/test/unit/qualifier_test.rb +++ b/test/unit/qualifier_test.rb @@ -30,4 +30,16 @@ class QualifierTest < Test::Unit::TestCase assert qualifier.valid? 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 -- libgit2 0.21.2