diff options
| author | Xinhui | 2017-07-13 11:23:19 +0200 |
|---|---|---|
| committer | Xinhui | 2017-07-13 17:33:22 +0200 |
| commit | b95bc1495f8212787a4161fb8e25eb4c38fa9b07 (patch) | |
| tree | c141b98b05c92c94566a46bf02b200210e4e6aa9 | |
| parent | 55a80fbc32bb126c2332f7694ed534de300a2214 (diff) | |
| download | chouette-core-b95bc1495f8212787a4161fb8e25eb4c38fa9b07.tar.bz2 | |
TimeTablePeriod implementation of checksum concerns
| -rw-r--r-- | app/models/chouette/time_table_date.rb | 6 | ||||
| -rw-r--r-- | app/models/chouette/time_table_period.rb | 6 | ||||
| -rw-r--r-- | app/models/concerns/checksum_support.rb | 3 | ||||
| -rw-r--r-- | spec/models/chouette/time_table_period_spec.rb | 8 |
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 |
