Commit 8dcf085c4d20f7039de15d6ea80d10f708dbd9e9

Authored by Rafael Manzo
1 parent b83ceca0

KalibroConfiguration#destroy cleans attributes memoization

If the memoization was left it could lead to inconsistencies after destroying

Signed off by: Heitor Reis <marcheing@gmail.com>
app/models/kalibro_configuration.rb
... ... @@ -25,6 +25,7 @@ class KalibroConfiguration &lt; KalibroClient::Entities::Configurations::KalibroCon
25 25  
26 26 def destroy
27 27 attributes.destroy unless attributes.nil?
  28 + @attributes = nil
28 29 super
29 30 end
30 31 end
... ...
spec/models/kalibro_configuration_spec.rb
... ... @@ -77,15 +77,25 @@ describe KalibroConfiguration, :type =&gt; :model do
77 77 let!(:kalibro_configuration_attributes) { FactoryGirl.build(:kalibro_configuration_attributes) }
78 78 let!(:kalibro_configuration) { kalibro_configuration_attributes.kalibro_configuration }
79 79  
80   - before do
81   - kalibro_configuration.expects(:attributes).twice.returns(kalibro_configuration_attributes)
82   - end
83   -
84 80 it 'should be destroyed' do
  81 + kalibro_configuration.expects(:attributes).twice.returns(kalibro_configuration_attributes)
85 82 kalibro_configuration_attributes.expects(:destroy)
86 83 KalibroClient::Entities::Configurations::KalibroConfiguration.any_instance.expects(:destroy).returns(kalibro_configuration)
87 84 kalibro_configuration.destroy
88 85 end
  86 +
  87 + it 'is expected to clean the attributes memoization' do
  88 + # Call attributes once so it memoizes
  89 + KalibroConfigurationAttributes.expects(:find_by).with(kalibro_configuration_id: kalibro_configuration.id).returns(kalibro_configuration_attributes)
  90 + expect(kalibro_configuration.attributes).to eq(kalibro_configuration_attributes)
  91 +
  92 + # Destroying
  93 + kalibro_configuration.destroy
  94 +
  95 + # The expectation call will try to find the attributes on the database which should be nil since it was destroyed
  96 + KalibroConfigurationAttributes.expects(:find_by).with(kalibro_configuration_id: kalibro_configuration.id).returns(nil)
  97 + expect(kalibro_configuration.attributes).to be_nil
  98 + end
89 99 end
90 100 end
91 101 end
... ...