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
test/factories.rb
... | ... | @@ -358,7 +358,9 @@ module Noosfero::Factory |
358 | 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 | 366 | # Scrap | ... | ... |
test/unit/manage_products_helper_test.rb
... | ... | @@ -137,6 +137,38 @@ class ManageProductsHelperTest < Test::Unit::TestCase |
137 | 137 | assert_equal 'LINK', edit_ui_button('link to edit', {:action => 'add_input', :id => product.id}) |
138 | 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 | 172 | protected |
141 | 173 | include NoosferoTestHelper |
142 | 174 | include ActionView::Helpers::TextHelper | ... | ... |
test/unit/qualifier_test.rb
... | ... | @@ -30,4 +30,16 @@ class QualifierTest < Test::Unit::TestCase |
30 | 30 | assert qualifier.valid? |
31 | 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 | 45 | end | ... | ... |