diff options
| -rw-r--r-- | app/controllers/vehicle_journeys_controller.rb | 4 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 12 | ||||
| -rw-r--r-- | spec/models/chouette/vehicle_journey_spec.rb | 17 |
3 files changed, 30 insertions, 3 deletions
diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index c78613e99..eebcbb922 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -84,7 +84,9 @@ class VehicleJourneysController < ChouetteController params[:q][:vehicle_journey_at_stops_departure_time_lteq] scope = scope.where_departure_time_between( params[:q][:vehicle_journey_at_stops_departure_time_gteq], - params[:q][:vehicle_journey_at_stops_departure_time_lteq] + params[:q][:vehicle_journey_at_stops_departure_time_lteq], + allow_empty: + params[:q][:vehicle_journey_without_departure_time] == 'true' ) end diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 0b4db3d9d..852139625 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -231,13 +231,21 @@ module Chouette # "vehicle_journeys"."id" # ') # .where_departure_time_between('08:00', '09:45') - def self.where_departure_time_between(start_time, end_time) + def self.where_departure_time_between( + start_time, + end_time, + allow_empty: false + ) self .where( %Q( "vehicle_journey_at_stops"."departure_time" >= ? AND "vehicle_journey_at_stops"."departure_time" < ? - OR "vehicle_journey_at_stops"."id" IS NULL + #{ + if allow_empty + 'OR "vehicle_journey_at_stops"."id" IS NULL' + end + } ), "2000-01-01 #{start_time}:00 UTC", "2000-01-01 #{end_time}:00 UTC" diff --git a/spec/models/chouette/vehicle_journey_spec.rb b/spec/models/chouette/vehicle_journey_spec.rb index caa4af203..7f2305134 100644 --- a/spec/models/chouette/vehicle_journey_spec.rb +++ b/spec/models/chouette/vehicle_journey_spec.rb @@ -346,6 +346,23 @@ describe Chouette::VehicleJourney, :type => :model do .to_a ).to eq([journey_middle]) end + + it "can include vehicle journeys that have nil stops" do + journey = create(:vehicle_journey_empty) + route = journey.route + + expect(route + .vehicle_journeys + .select('DISTINCT "vehicle_journeys".*') + .joins(' + LEFT JOIN "vehicle_journey_at_stops" + ON "vehicle_journey_at_stops"."vehicle_journey_id" = + "vehicle_journeys"."id" + ') + .where_departure_time_between('02:30', '03:30', allow_empty: true) + .to_a + ).to eq([journey]) + end end subject { create(:vehicle_journey_odd) } |
