aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/vehicle_journeys_controller.rb4
-rw-r--r--app/models/chouette/vehicle_journey.rb12
-rw-r--r--spec/models/chouette/vehicle_journey_spec.rb17
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) }