diff options
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 8 | ||||
| -rw-r--r-- | spec/models/chouette/vehicle_journey_spec.rb | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 8a704d8c0..5cd87a66a 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -221,9 +221,13 @@ module Chouette def self.state_permited_attributes item attrs = item.slice('published_journey_identifier', 'published_journey_name', 'journey_pattern_id', 'company_id').to_hash - ['company', 'journey_pattern'].map do |association| - attrs["#{association}_id"] = item[association]['id'] if item[association] + + if item['journey_pattern'] + attrs['journey_pattern_id'] = item['journey_pattern']['id'] end + + attrs['company_id'] = item['company'] ? item['company']['id'] : nil + attrs["custom_field_values"] = Hash[*(item["custom_fields"] || {}).map{|k, v| [k, v["value"]]}.flatten] attrs end diff --git a/spec/models/chouette/vehicle_journey_spec.rb b/spec/models/chouette/vehicle_journey_spec.rb index 2a88ac3ce..21bbc1ba8 100644 --- a/spec/models/chouette/vehicle_journey_spec.rb +++ b/spec/models/chouette/vehicle_journey_spec.rb @@ -231,6 +231,14 @@ describe Chouette::VehicleJourney, :type => :model do expect(vehicle_journey.reload.company_id).to eq state['company']['id'] end + it "handles vehicle journey company deletion" do + vehicle_journey.update(company: create(:company)) + state.delete('company') + Chouette::VehicleJourney.state_update(route, collection) + + expect(vehicle_journey.reload.company_id).to be_nil + end + it 'should update vj attributes from state' do state['published_journey_name'] = 'edited_name' state['published_journey_identifier'] = 'edited_identifier' |
