diff options
| -rw-r--r-- | app/controllers/time_tables_controller.rb | 1 | ||||
| -rw-r--r-- | app/models/chouette/time_table.rb | 15 | ||||
| -rw-r--r-- | spec/models/chouette/time_table_spec.rb | 27 |
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 |
