diff --git a/apps/site/lib/site_web/controllers/schedule_controller.ex b/apps/site/lib/site_web/controllers/schedule_controller.ex index aa08c869c6..984557adc6 100644 --- a/apps/site/lib/site_web/controllers/schedule_controller.ex +++ b/apps/site/lib/site_web/controllers/schedule_controller.ex @@ -64,7 +64,17 @@ defmodule SiteWeb.ScheduleController do |> future_departures(conn, params) |> omit_last_stop_departures(params) - json(conn, schedules) + case schedules do + [%Schedule{} | _] -> + json(conn, schedules) + + _ -> + Logger.info( + "module=#{__MODULE__} fun=schedules_for_stop stop=#{stop_id} date_time=#{DateTime.to_string(date_time(conn.assigns))} no_schedules_returned" + ) + + json(conn, []) + end end end diff --git a/apps/site/test/site_web/controllers/schedule_controller_test.exs b/apps/site/test/site_web/controllers/schedule_controller_test.exs index 8952b552eb..28466cb09f 100644 --- a/apps/site/test/site_web/controllers/schedule_controller_test.exs +++ b/apps/site/test/site_web/controllers/schedule_controller_test.exs @@ -421,6 +421,43 @@ defmodule SiteWeb.ScheduleControllerTest do end end + test "logs when no schedules returned", %{conn: conn} do + with_mock(Schedules.Repo, [:passthrough], + schedules_for_stop: fn "TEST 1234", [] -> + # will get filtered out + [ + %Schedules.Schedule{ + route: %Routes.Route{id: "route"}, + stop: %Stops.Stop{id: "TEST 1234"}, + departure_time: ~U[2019-05-18 22:25:06.098765Z], + last_stop?: true + } + ] + end + ) do + log = + ExUnit.CaptureLog.capture_log(fn -> + old_level = Logger.level() + + on_exit(fn -> + Logger.configure(level: old_level) + end) + + Logger.configure(level: :info) + + conn = + ScheduleController.schedules_for_stop(conn, %{ + "stop_id" => "TEST 1234", + "future_departures" => "true", + "last_stop_departures" => "false" + }) + + assert [] = json_response(conn, 200) + end) + + assert log =~ "[info] module=Elixir.SiteWeb.ScheduleController" + assert log =~ "fun=schedules_for_stop stop=TEST 1234" + assert log =~ "no_schedules_returned" end end end