diff options
| author | Alban Peignier | 2018-04-18 22:56:28 +0200 | 
|---|---|---|
| committer | GitHub | 2018-04-18 22:56:28 +0200 | 
| commit | 15a389600730c5e6c393a5537f9c646d1d28a134 (patch) | |
| tree | 46d61f61af37270ceda0eb60bf658dbb9ef8bb8f | |
| parent | 91aedb06bb2310867b34ac3adcdd8427e56f736b (diff) | |
| parent | 220e839fddec44c9a1e73fb5e7cd7f701faf726d (diff) | |
| download | chouette-core-15a389600730c5e6c393a5537f9c646d1d28a134.tar.bz2 | |
Merge pull request #487 from af83/6410-route--don,t-run-calculate_costs-during-referential-mer
Route: Don't run `#calculate_costs!` during a referential merge. Fixes #6410
| -rw-r--r-- | app/models/chouette/route.rb | 6 | ||||
| -rw-r--r-- | spec/models/chouette/route/route_base_spec.rb | 19 | 
2 files changed, 24 insertions, 1 deletions
| diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb index c5e909d7e..a5eab3002 100644 --- a/app/models/chouette/route.rb +++ b/app/models/chouette/route.rb @@ -80,7 +80,11 @@ module Chouette      validates :wayback, inclusion: { in: self.wayback.values }      after_commit :calculate_costs!,        on: [:create, :update], -      if: ->() { TomTom.enabled? } +      if: ->() { +        # Ensure the call back doesn't run during a referential merge +        !referential.in_referential_suite? && +          TomTom.enabled? +      }      def duplicate opposite=false        overrides = { diff --git a/spec/models/chouette/route/route_base_spec.rb b/spec/models/chouette/route/route_base_spec.rb index 43ff28c40..e76f10a13 100644 --- a/spec/models/chouette/route/route_base_spec.rb +++ b/spec/models/chouette/route/route_base_spec.rb @@ -77,5 +77,24 @@ RSpec.describe Chouette::Route, :type => :model do        expect(route).not_to receive(:calculate_costs!)        route.save      end + +    it "doesn't call #calculate_costs! after_commit if in a ReferentialSuite", +        truncation: true do +      begin +        allow(TomTom).to receive(:enabled?).and_return(true) + +        referential_suite = create(:referential_suite) +        referential = create(:referential, referential_suite: referential_suite) + +        referential.switch do +          route = build(:route) + +          expect(route).not_to receive(:calculate_costs!) +          route.save +        end +      ensure +        referential.destroy +      end +    end    end  end | 
