aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-07-13 17:31:25 +0200
committerXinhui2017-07-17 12:02:58 +0200
commitd524e5474a913df296d4f4586eba4b879bad8b6f (patch)
treed819a7bda08f54dcaf91aa79cd5e7bdd5fa6f2c6
parentdbf417d74763a7ef9f993c37ae09824699ece4a2 (diff)
downloadchouette-core-d524e5474a913df296d4f4586eba4b879bad8b6f.tar.bz2
Route implementation of checksum concerns
-rw-r--r--app/models/chouette/route.rb9
-rw-r--r--spec/factories/chouette_journey_pattern.rb10
-rw-r--r--spec/factories/chouette_routes.rb1
-rw-r--r--spec/models/chouette/route/route_base_spec.rb7
4 files changed, 18 insertions, 9 deletions
diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb
index 76905bf2b..6774e8a86 100644
--- a/app/models/chouette/route.rb
+++ b/app/models/chouette/route.rb
@@ -1,5 +1,6 @@
class Chouette::Route < Chouette::TridentActiveRecord
include RouteRestrictions
+ include ChecksumSupport
extend Enumerize
extend ActiveModel::Naming
@@ -99,6 +100,14 @@ class Chouette::Route < Chouette::TridentActiveRecord
end
end
+ def checksum_attributes
+ values = self.slice(*['name', 'published_name', 'wayback']).values
+ values.tap do |attrs|
+ attrs << self.stop_points.map{|sp| "#{sp.stop_area.user_objectid}#{sp.for_boarding}#{sp.for_alighting}" }.join
+ attrs << self.routing_constraint_zones.map(&:checksum)
+ end
+ end
+
def geometry
points = stop_areas.map(&:to_lat_lng).compact.map do |loc|
[loc.lng, loc.lat]
diff --git a/spec/factories/chouette_journey_pattern.rb b/spec/factories/chouette_journey_pattern.rb
index bf55b286f..62241f313 100644
--- a/spec/factories/chouette_journey_pattern.rb
+++ b/spec/factories/chouette_journey_pattern.rb
@@ -1,14 +1,14 @@
FactoryGirl.define do
-
+
factory :journey_pattern_common, :class => Chouette::JourneyPattern do
sequence(:name) { |n| "jp name #{n}" }
sequence(:published_name) { |n| "jp publishedname #{n}" }
sequence(:comment) { |n| "jp comment #{n}" }
sequence(:registration_number) { |n| "jp registration_number #{n}" }
sequence(:objectid) { |n| "test:JourneyPattern:#{n}" }
-
+
association :route, :factory => :route
-
+
factory :journey_pattern do
after(:create) do |j|
j.stop_point_ids = j.route.stop_points.map(&:id)
@@ -16,7 +16,7 @@ FactoryGirl.define do
j.arrival_stop_point_id = j.route.stop_points.last.id
end
end
-
+
factory :journey_pattern_odd do
after(:create) do |j|
j.stop_point_ids = j.route.stop_points.select { |sp| sp.position%2==0}.map(&:id)
@@ -24,7 +24,7 @@ FactoryGirl.define do
j.arrival_stop_point_id = j.stop_point_ids.last
end
end
-
+
factory :journey_pattern_even do
after(:create) do |j|
j.stop_point_ids = j.route.stop_points.select { |sp| sp.position%2==1}.map(&:id)
diff --git a/spec/factories/chouette_routes.rb b/spec/factories/chouette_routes.rb
index c1a9423c5..a707bcbf6 100644
--- a/spec/factories/chouette_routes.rb
+++ b/spec/factories/chouette_routes.rb
@@ -18,6 +18,7 @@ FactoryGirl.define do
after(:create) do |route, evaluator|
create_list(:stop_point, evaluator.stop_points_count, route: route)
+ route.reload
end
factory :route_with_journey_patterns do
diff --git a/spec/models/chouette/route/route_base_spec.rb b/spec/models/chouette/route/route_base_spec.rb
index 08f201022..c93b311ff 100644
--- a/spec/models/chouette/route/route_base_spec.rb
+++ b/spec/models/chouette/route/route_base_spec.rb
@@ -1,6 +1,9 @@
RSpec.describe Chouette::Route, :type => :model do
subject { create(:route) }
+ describe 'checksum' do
+ it_behaves_like 'checksum support', :route
+ end
describe '#objectid' do
subject { super().objectid }
@@ -62,8 +65,4 @@ RSpec.describe Chouette::Route, :type => :model do
end
end
end
-
end
-
-
-