aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlban Peignier2018-04-18 22:56:28 +0200
committerGitHub2018-04-18 22:56:28 +0200
commit15a389600730c5e6c393a5537f9c646d1d28a134 (patch)
tree46d61f61af37270ceda0eb60bf658dbb9ef8bb8f
parent91aedb06bb2310867b34ac3adcdd8427e56f736b (diff)
parent220e839fddec44c9a1e73fb5e7cd7f701faf726d (diff)
downloadchouette-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.rb6
-rw-r--r--spec/models/chouette/route/route_base_spec.rb19
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