aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-04-26 15:10:35 +0200
committerXinhui2017-04-26 15:10:41 +0200
commit489a05ee6469b711140ca6d4ad6ebe296bc2d82f (patch)
treefb78336a9755bd8a624c77c7cb753a41f4189f26
parent6dde8056e94515f885c73ecf1a07485784eaaca6 (diff)
downloadchouette-core-489a05ee6469b711140ca6d4ad6ebe296bc2d82f.tar.bz2
Wip TimeTables#update save day_types
Refs #2899
-rw-r--r--app/controllers/time_tables_controller.rb1
-rw-r--r--app/models/chouette/time_table.rb15
-rw-r--r--spec/models/chouette/time_table_spec.rb27
3 files changed, 40 insertions, 3 deletions
diff --git a/app/controllers/time_tables_controller.rb b/app/controllers/time_tables_controller.rb
index 2775316e0..487c14e9f 100644
--- a/app/controllers/time_tables_controller.rb
+++ b/app/controllers/time_tables_controller.rb
@@ -58,7 +58,6 @@ class TimeTablesController < ChouetteController
def update
state = JSON.parse request.raw_post
-
respond_to do |format|
format.json { render json: state, status: state['errors'] ? :unprocessable_entity : :ok }
end
diff --git a/app/models/chouette/time_table.rb b/app/models/chouette/time_table.rb
index 086e6fa77..acce96681 100644
--- a/app/models/chouette/time_table.rb
+++ b/app/models/chouette/time_table.rb
@@ -32,6 +32,21 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
validates_associated :dates
validates_associated :periods
+ def state_update state
+ update_attributes(self.class.state_permited_attributes(state))
+
+ days = state['day_types'].split(',')
+ Date::DAYNAMES.map(&:underscore).each do |name|
+ prefix = human_attribute_name(name).first(2)
+ send("#{name}=", days.include?(prefix))
+ end
+ self.save
+ end
+
+ def self.state_permited_attributes item
+ item.slice('comment').to_hash
+ end
+
def presenter
@presenter ||= ::TimeTablePresenter.new( self)
end
diff --git a/spec/models/chouette/time_table_spec.rb b/spec/models/chouette/time_table_spec.rb
index a3a361e7b..fd9f70740 100644
--- a/spec/models/chouette/time_table_spec.rb
+++ b/spec/models/chouette/time_table_spec.rb
@@ -7,6 +7,29 @@ describe Chouette::TimeTable, :type => :model do
it { is_expected.to validate_presence_of :comment }
it { is_expected.to validate_uniqueness_of :objectid }
+ describe "Update state" do
+ def time_table_to_state time_table
+ time_table.slice('id', 'comment').tap do |item|
+ item['day_types'] = "Di,Lu,Ma,Me,Je,Ve,Sa"
+ end
+ end
+
+ let(:state) { time_table_to_state subject }
+
+ it 'should update comment' do
+ state['comment'] = "Edited timetable name"
+ subject.state_update state
+ expect(subject.reload.comment).to eq state['comment']
+ end
+
+ it 'should update day_types' do
+ state['day_types'] = "Di,Lu,Je,Ma"
+ subject.state_update state
+ expect(subject.reload.valid_days).to include(7, 1, 4, 2)
+ expect(subject.reload.valid_days).not_to include(3, 5, 6)
+ end
+ end
+
describe "#periods_max_date" do
context "when all period extends from 04/10/2013 to 04/15/2013," do
before(:each) do
@@ -1204,8 +1227,8 @@ end
expect(subject.dates[9].date).to eq(Date.new(2014,8,27))
end
end
-
-
+
+
context "with same definition : dsjointed timetable should be empty" do
before do
subject.periods.clear