Commit 6697a453e239550c59c9988a7649a72e307842e5
Committed by
Daniela Feitosa
1 parent
63d08ecc
Exists in
master
and in
29 other branches
Removing references between Product and qualifier when destroy qualifier
(ActionItem1879)
Showing
4 changed files
with
49 additions
and
1 deletions
Show diff stats
app/models/qualifier.rb
@@ -8,4 +8,6 @@ class Qualifier < ActiveRecord::Base | @@ -8,4 +8,6 @@ class Qualifier < ActiveRecord::Base | ||
8 | validates_presence_of :environment_id | 8 | validates_presence_of :environment_id |
9 | validates_presence_of :name | 9 | validates_presence_of :name |
10 | 10 | ||
11 | + has_many :product_qualifiers, :dependent => :destroy | ||
12 | + | ||
11 | end | 13 | end |
test/factories.rb
@@ -358,7 +358,9 @@ module Noosfero::Factory | @@ -358,7 +358,9 @@ module Noosfero::Factory | ||
358 | # Certifier | 358 | # Certifier |
359 | ############################################### | 359 | ############################################### |
360 | 360 | ||
361 | - alias :defaults_for_certifier :defaults_for_qualifier | 361 | + def defaults_for_certifier |
362 | + defaults_for_qualifier.merge({ :name => 'Certifier ' + factory_num_seq.to_s }) | ||
363 | + end | ||
362 | 364 | ||
363 | ############################################### | 365 | ############################################### |
364 | # Scrap | 366 | # Scrap |
test/unit/manage_products_helper_test.rb
@@ -137,6 +137,38 @@ class ManageProductsHelperTest < Test::Unit::TestCase | @@ -137,6 +137,38 @@ class ManageProductsHelperTest < Test::Unit::TestCase | ||
137 | assert_equal 'LINK', edit_ui_button('link to edit', {:action => 'add_input', :id => product.id}) | 137 | assert_equal 'LINK', edit_ui_button('link to edit', {:action => 'add_input', :id => product.id}) |
138 | end | 138 | end |
139 | 139 | ||
140 | + should 'list qualifiers and certifiers of a product' do | ||
141 | + product = fast_create(Product) | ||
142 | + qualifier = fast_create(Qualifier) | ||
143 | + certifier = fast_create(Certifier) | ||
144 | + ProductQualifier.create!(:product => product, :qualifier => qualifier, :certifier => certifier) | ||
145 | + assert_match /✔ Qualifier \d+ certified by Certifier \d+/, display_qualifiers(product) | ||
146 | + end | ||
147 | + | ||
148 | + should 'product survive to a Qualifier deletation' do | ||
149 | + product = fast_create(Product) | ||
150 | + qualifier = fast_create(Qualifier) | ||
151 | + certifier = fast_create(Certifier) | ||
152 | + ProductQualifier.create!(:product => product, :qualifier => qualifier, :certifier => certifier) | ||
153 | + qualifier.destroy | ||
154 | + assert_nothing_raised do | ||
155 | + assert_no_match /✔ Qualifier \d+ certified by Certifier \d+/, display_qualifiers(product) | ||
156 | + end | ||
157 | + end | ||
158 | + | ||
159 | + should 'product consider its Qualifier self-declared when Certifier is deleted' do | ||
160 | + product = fast_create(Product) | ||
161 | + qualifier = fast_create(Qualifier) | ||
162 | + certifier = fast_create(Certifier) | ||
163 | + ProductQualifier.create!(:product => product, :qualifier => qualifier, :certifier => certifier) | ||
164 | + certifier.destroy | ||
165 | + assert_nothing_raised do | ||
166 | + result = display_qualifiers(product) | ||
167 | + assert_match /✔ Qualifier \d+ \(Self declared\)/, result | ||
168 | + assert_no_match /certified by Certifier \d+/, result | ||
169 | + end | ||
170 | + end | ||
171 | + | ||
140 | protected | 172 | protected |
141 | include NoosferoTestHelper | 173 | include NoosferoTestHelper |
142 | include ActionView::Helpers::TextHelper | 174 | include ActionView::Helpers::TextHelper |
test/unit/qualifier_test.rb
@@ -30,4 +30,16 @@ class QualifierTest < Test::Unit::TestCase | @@ -30,4 +30,16 @@ class QualifierTest < Test::Unit::TestCase | ||
30 | assert qualifier.valid? | 30 | assert qualifier.valid? |
31 | end | 31 | end |
32 | 32 | ||
33 | + should 'clean all ProductQualifier when destroy a Qualifier' do | ||
34 | + product1 = fast_create(Product) | ||
35 | + product2 = fast_create(Product) | ||
36 | + qualifier = fast_create(Qualifier, :name => 'Free Software') | ||
37 | + certifier = fast_create(Certifier, :name => 'FSF') | ||
38 | + ProductQualifier.create!(:product => product1, :qualifier => qualifier, :certifier => certifier) | ||
39 | + ProductQualifier.create!(:product => product2, :qualifier => qualifier, :certifier => certifier) | ||
40 | + assert_equal [['Free Software', 'FSF']], product1.product_qualifiers.map{|i| [i.qualifier.name, i.certifier.name]} | ||
41 | + Qualifier.destroy_all | ||
42 | + assert_equal [], product1.product_qualifiers(true) | ||
43 | + end | ||
44 | + | ||
33 | end | 45 | end |