Commit 6697a453e239550c59c9988a7649a72e307842e5
Committed by
Daniela Feitosa
1 parent
63d08ecc
Exists in
master
and in
22 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 | ... | ... |