aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-04-23 11:08:55 +0200
committerZog2018-04-23 11:08:55 +0200
commit946563228f24f551e551dedaafd7ec9bbaf36094 (patch)
treeb43402c27a49a11a1978e26862149f1e70dc4259
parente6567cbfc987d8488492e2b1ce66a03db3a3d37d (diff)
downloadchouette-core-946563228f24f551e551dedaafd7ec9bbaf36094.tar.bz2
Refs #6634; Fix checksum issues with duplicated routes6634-update-checksum-on-duplicated-routes
-rw-r--r--app/models/chouette/route.rb2
-rw-r--r--spec/controllers/routes_controller_spec.rb19
2 files changed, 16 insertions, 5 deletions
diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb
index a5eab3002..b7f1e722b 100644
--- a/app/models/chouette/route.rb
+++ b/app/models/chouette/route.rb
@@ -152,6 +152,8 @@ module Chouette
end
end
+ has_checksum_children StopPoint
+
def geometry
points = stop_areas.map(&:to_lat_lng).compact.map do |loc|
[loc.lng, loc.lat]
diff --git a/spec/controllers/routes_controller_spec.rb b/spec/controllers/routes_controller_spec.rb
index 59020914d..444528979 100644
--- a/spec/controllers/routes_controller_spec.rb
+++ b/spec/controllers/routes_controller_spec.rb
@@ -54,9 +54,10 @@ RSpec.describe RoutesController, type: :controller do
describe "PUT /update" do
before(:each) do
+ @checksum_source = route.checksum_source
put :update, id: route.id, line_id: route.line_id,
referential_id: referential.id,
- route: route.attributes
+ route: route.attributes.update({name: "New name"})
end
it_behaves_like "route, line and referential linked"
@@ -64,6 +65,9 @@ RSpec.describe RoutesController, type: :controller do
it "sets metadata" do
expect(Chouette::Route.last.metadata.modifier_username).to eq @user.username
end
+ it "updates checksum" do
+ expect(route.reload.checksum_source).to_not eq @checksum_source
+ end
end
describe "GET /show" do
@@ -105,10 +109,15 @@ RSpec.describe RoutesController, type: :controller do
opposite: TRUE
end.to change { Chouette::Route.count }.by(1)
- expect(Chouette::Route.last.name).to eq(I18n.t('routes.opposite', name: route.name))
- expect(Chouette::Route.last.published_name).to eq(Chouette::Route.last.name)
- expect(Chouette::Route.last.opposite_route).to eq(route)
- expect(Chouette::Route.last.stop_area_ids).to eq route.stop_area_ids.reverse
+ new_route = Chouette::Route.last
+ expect(new_route.name).to eq(I18n.t('routes.opposite', name: route.name))
+ expect(new_route.published_name).to eq(new_route.name)
+ expect(new_route.opposite_route).to eq(route)
+ expect(new_route.stop_area_ids).to eq route.stop_area_ids.reverse
+ expect(new_route.checksum).to_not eq route.checksum
+ checksum = new_route.checksum
+ new_route.update_checksum!
+ expect(new_route.checksum).to eq checksum
route.reload.stop_points.each do |sp|
expect(sp.position).to eq @positions[sp.id]
end