Commit da48ccac56745ce349a4fe4bca49025b0335ab89

Authored by Rafael Martins
1 parent 9d41da96

Fix for Certifier - will set Qualifier as self-declared if destroyed

app/models/certifier.rb
@@ -5,12 +5,17 @@ class Certifier < ActiveRecord::Base @@ -5,12 +5,17 @@ class Certifier < ActiveRecord::Base
5 has_many :qualifier_certifiers, :dependent => :destroy 5 has_many :qualifier_certifiers, :dependent => :destroy
6 has_many :qualifiers, :through => :qualifier_certifiers 6 has_many :qualifiers, :through => :qualifier_certifiers
7 7
8 - has_many :product_qualifiers, :dependent => :destroy 8 + has_many :product_qualifiers
9 has_many :products, :through => :product_qualifiers, :source => :product 9 has_many :products, :through => :product_qualifiers, :source => :product
10 10
11 validates_presence_of :environment_id 11 validates_presence_of :environment_id
12 validates_presence_of :name 12 validates_presence_of :name
13 13
  14 + def destroy
  15 + product_qualifiers.each { |pq| pq.update_attributes! :certifier => nil }
  16 + super
  17 + end
  18 +
14 def link 19 def link
15 self[:link] || '' 20 self[:link] || ''
16 end 21 end
test/unit/manage_products_helper_test.rb
@@ -186,12 +186,11 @@ class ManageProductsHelperTest < ActiveSupport::TestCase @@ -186,12 +186,11 @@ class ManageProductsHelperTest < ActiveSupport::TestCase
186 end 186 end
187 end 187 end
188 188
189 - should 'product consider its Qualifier self-declared when Certifier is deleted' do 189 + should 'delete product Qualifier self-declared when Certifier is deleted' do
190 product = fast_create(Product) 190 product = fast_create(Product)
191 qualifier = fast_create(Qualifier) 191 qualifier = fast_create(Qualifier)
192 certifier = fast_create(Certifier) 192 certifier = fast_create(Certifier)
193 ProductQualifier.create!(:product => product, :qualifier => qualifier, :certifier => certifier) 193 ProductQualifier.create!(:product => product, :qualifier => qualifier, :certifier => certifier)
194 -# The relationship between product, certifiers and qualifiers is extremely complicated  
195 certifier.destroy 194 certifier.destroy
196 assert_nothing_raised do 195 assert_nothing_raised do
197 result = display_qualifiers(product) 196 result = display_qualifiers(product)