diff options
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 6 | ||||
| -rw-r--r-- | spec/models/chouette/vehicle_journey_spec.rb | 26 |
2 files changed, 28 insertions, 4 deletions
diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index d03b52e83..9853acafb 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -48,10 +48,10 @@ module Chouette end def vehicle_journey_at_stops_matrix - fill = route.stop_points.count - self.vehicle_journey_at_stops.count at_stops = self.vehicle_journey_at_stops.to_a.dup - fill.times do - at_stops << Chouette::VehicleJourneyAtStop.new + filling = route.stop_points.map(&:id) - at_stops.map(&:stop_point_id) + filling.each do |id| + at_stops.insert(route.stop_points.map(&:id).index(id), Chouette::VehicleJourneyAtStop.new()) end at_stops end diff --git a/spec/models/chouette/vehicle_journey_spec.rb b/spec/models/chouette/vehicle_journey_spec.rb index 4f55ba774..a6569d011 100644 --- a/spec/models/chouette/vehicle_journey_spec.rb +++ b/spec/models/chouette/vehicle_journey_spec.rb @@ -24,9 +24,33 @@ describe Chouette::VehicleJourney, :type => :model do end let(:route) { create :route } - let(:vehicle_journey) { create :vehicle_journey, route: route } + let(:journey_pattern) { create :journey_pattern, route: route } + let(:vehicle_journey) { create :vehicle_journey, route: route, journey_pattern: journey_pattern } + let(:state) { vehicle_journey_to_state(vehicle_journey) } + describe '.vehicle_journey_at_stops_matrix' do + it 'should fill missing VehicleJourneyAtStop with dummy' do + vehicle_journey.vehicle_journey_at_stops.last.destroy + expect(vehicle_journey.reload.vehicle_journey_at_stops.map(&:id).count).to eq(route.stop_points.map(&:id).count - 1) + + at_stops = vehicle_journey.reload.vehicle_journey_at_stops_matrix + expect(at_stops.last.id).to be_nil + expect(at_stops.count).to eq route.stop_points.count + end + + it 'should keep index order of VehicleJourneyAtStop' do + vehicle_journey.vehicle_journey_at_stops[3].destroy + at_stops = vehicle_journey.reload.vehicle_journey_at_stops_matrix + + expect(at_stops[3].id).to be_nil + at_stops.delete_at(3) + at_stops.each do |stop| + expect(stop.id).not_to be_nil + end + end + end + it 'should update arrival_time' do stop = state['vehicle_journey_at_stops'].first stop['arrival_time']['hour'] = "10" |
