aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-07-13 11:23:19 +0200
committerXinhui2017-07-13 17:33:22 +0200
commitb95bc1495f8212787a4161fb8e25eb4c38fa9b07 (patch)
treec141b98b05c92c94566a46bf02b200210e4e6aa9
parent55a80fbc32bb126c2332f7694ed534de300a2214 (diff)
downloadchouette-core-b95bc1495f8212787a4161fb8e25eb4c38fa9b07.tar.bz2
TimeTablePeriod implementation of checksum concerns
-rw-r--r--app/models/chouette/time_table_date.rb6
-rw-r--r--app/models/chouette/time_table_period.rb6
-rw-r--r--app/models/concerns/checksum_support.rb3
-rw-r--r--spec/models/chouette/time_table_period_spec.rb8
4 files changed, 16 insertions, 7 deletions
diff --git a/app/models/chouette/time_table_date.rb b/app/models/chouette/time_table_date.rb
index 2aa86a14e..1893eae91 100644
--- a/app/models/chouette/time_table_date.rb
+++ b/app/models/chouette/time_table_date.rb
@@ -15,10 +15,8 @@ class Chouette::TimeTableDate < Chouette::ActiveRecord
end
def checksum_attributes
- [].tap do |attrs|
- attrs << self.date.to_s
- attrs << self.in_out.to_s
- end
+ attrs = ['date', 'in_out']
+ self.slice(*attrs).values
end
end
diff --git a/app/models/chouette/time_table_period.rb b/app/models/chouette/time_table_period.rb
index 6d3486bb6..ed136f3b9 100644
--- a/app/models/chouette/time_table_period.rb
+++ b/app/models/chouette/time_table_period.rb
@@ -1,4 +1,6 @@
class Chouette::TimeTablePeriod < Chouette::ActiveRecord
+ include ChecksumSupport
+
self.primary_key = "id"
belongs_to :time_table, inverse_of: :periods
acts_as_list :scope => 'time_table_id = #{time_table_id}',:top_of_list => 0
@@ -7,6 +9,10 @@ class Chouette::TimeTablePeriod < Chouette::ActiveRecord
validate :start_must_be_before_end
+ def checksum_attributes
+ attrs = ['period_start', 'period_end']
+ self.slice(*attrs).values
+ end
def self.model_name
ActiveModel::Name.new Chouette::TimeTablePeriod, Chouette, "TimeTablePeriod"
diff --git a/app/models/concerns/checksum_support.rb b/app/models/concerns/checksum_support.rb
index 13c476607..01f4aba67 100644
--- a/app/models/concerns/checksum_support.rb
+++ b/app/models/concerns/checksum_support.rb
@@ -12,7 +12,8 @@ module ChecksumSupport
end
def current_checksum_source
- self.checksum_attributes.map!{ |x| x || VALUE_FOR_NIL_ATTRIBUTE }.join(SEPARATOR)
+ source = self.checksum_attributes.map{ |x| x || VALUE_FOR_NIL_ATTRIBUTE }
+ source.map(&:to_s).join(SEPARATOR)
end
def set_current_checksum_source
diff --git a/spec/models/chouette/time_table_period_spec.rb b/spec/models/chouette/time_table_period_spec.rb
index 07dc602cb..cc1a3ae09 100644
--- a/spec/models/chouette/time_table_period_spec.rb
+++ b/spec/models/chouette/time_table_period_spec.rb
@@ -4,11 +4,15 @@ describe Chouette::TimeTablePeriod, :type => :model do
let!(:time_table) { create(:time_table)}
subject { create(:time_table_period ,:time_table => time_table, :period_start => Date.new(2014,6,30), :period_end => Date.new(2014,7,6) ) }
- let!(:p2) {create(:time_table_period ,:time_table => time_table, :period_start => Date.new(2014,7,6), :period_end => Date.new(2014,7,14) ) }
+ let!(:p2) {create(:time_table_period ,:time_table => time_table, :period_start => Date.new(2014,7,6), :period_end => Date.new(2014,7,14) ) }
it { is_expected.to validate_presence_of :period_start }
it { is_expected.to validate_presence_of :period_end }
-
+
+ describe 'checksum' do
+ it_behaves_like 'checksum support', :time_table_period
+ end
+
describe "#overlap" do
context "when periods intersect, " do
it "should detect period overlap" do