From 7f86bfecb1eb7b41aa10f8c4497a3931a800efbb Mon Sep 17 00:00:00 2001
From: Anthony Shull <shull.anthony@gmail.com>
Date: Tue, 23 Jul 2024 10:06:48 -0500
Subject: [PATCH] get stops info so that we know what zone a cr stop is in for
 fare calculation; tests

---
 lib/trip_planner/parser.ex                    |  12 +--
 test/dotcom/trip_plan/alerts_test.exs         |  54 ++++++----
 .../trip_plan/itinerary_row_list_test.exs     |  26 +++--
 test/dotcom/trip_plan/itinerary_row_test.exs  |  23 ++--
 test/dotcom/trip_plan/related_link_test.exs   |   4 +
 test/dotcom_web/views/trip_plan_view_test.exs |   6 +-
 test/trip_plan/itinerary_test.exs             |  21 ++--
 test/trip_plan/leg_test.exs                   | 102 ++++++++++--------
 test/trip_plan/transfer_test.exs              |  24 +++--
 9 files changed, 166 insertions(+), 106 deletions(-)

diff --git a/lib/trip_planner/parser.ex b/lib/trip_planner/parser.ex
index 8ee28696ea..20e2001b23 100644
--- a/lib/trip_planner/parser.ex
+++ b/lib/trip_planner/parser.ex
@@ -10,9 +10,11 @@ defmodule Dotcom.TripPlanner.Parser do
      MBTA system.
   """
 
-  alias TripPlan.{Itinerary, Leg, NamedPosition, PersonalDetail, TransitDetail}
   alias Dotcom.TripPlanner.FarePasses
   alias OpenTripPlannerClient.Schema
+  alias TripPlan.{Itinerary, Leg, NamedPosition, PersonalDetail, TransitDetail}
+
+  @stops_repo Application.compile_env!(:dotcom, :repo_modules)[:stops]
 
   @spec parse(Schema.Itinerary.t()) :: Itinerary.t()
   def parse(
@@ -166,15 +168,11 @@ defmodule Dotcom.TripPlanner.Parser do
 
   defp build_stop(
          %Schema.Stop{
-           gtfs_id: "mbta-ma-us:" <> gtfs_id,
-           name: name
+           gtfs_id: "mbta-ma-us:" <> gtfs_id
          },
          attributes
        ) do
-    %Stops.Stop{
-      id: gtfs_id,
-      name: name
-    }
+    @stops_repo.get(gtfs_id)
     |> struct(attributes)
   end
 
diff --git a/test/dotcom/trip_plan/alerts_test.exs b/test/dotcom/trip_plan/alerts_test.exs
index e5a5a8dd89..20f8ad5d33 100644
--- a/test/dotcom/trip_plan/alerts_test.exs
+++ b/test/dotcom/trip_plan/alerts_test.exs
@@ -3,24 +3,28 @@ defmodule Dotcom.TripPlan.AlertsTest do
 
   import Dotcom.TripPlan.Alerts
   import Mox
-  import Test.Support.Factories.TripPlanner.TripPlanner
 
-  alias Alerts.Alert
-  alias Alerts.InformedEntity, as: IE
+  alias Alerts.{Alert, InformedEntity}
+  alias Test.Support.Factories.{MBTA.Api, Stops.Stop, TripPlanner.TripPlanner}
   alias TripPlan.Itinerary
 
   setup :verify_on_exit!
 
   setup do
-    leg = build(:transit_leg)
+    stub(Stops.Repo.Mock, :get, fn _ ->
+      Stop.build(:stop)
+    end)
+
+    leg = TripPlanner.build(:transit_leg)
 
     itinerary =
-      build(:itinerary,
+      TripPlanner.build(:itinerary,
         legs: [leg]
       )
 
     [route_id] = Itinerary.route_ids(itinerary)
     [trip_id] = Itinerary.trip_ids(itinerary)
+
     {:ok, %{itinerary: itinerary, route_id: route_id, trip_id: trip_id, route: leg.mode.route}}
   end
 
@@ -29,7 +33,7 @@ defmodule Dotcom.TripPlan.AlertsTest do
       expect(MBTA.Api.Mock, :get_json, fn "/trips/" <> id, [] ->
         %JsonApi{
           data: [
-            Test.Support.Factories.MBTA.Api.build(:trip_item, %{id: id})
+            Api.build(:trip_item, %{id: id})
           ]
         }
       end)
@@ -37,10 +41,10 @@ defmodule Dotcom.TripPlan.AlertsTest do
       good_alert =
         Alert.new(
           active_period: [valid_active_period(itinerary)],
-          informed_entity: [%IE{route: route_id}]
+          informed_entity: [%InformedEntity{route: route_id}]
         )
 
-      bad_alert = Alert.update(good_alert, informed_entity: [%IE{route: "not_valid"}])
+      bad_alert = Alert.update(good_alert, informed_entity: [%InformedEntity{route: "not_valid"}])
       assert_only_good_alert(good_alert, bad_alert, itinerary)
     end
 
@@ -48,7 +52,7 @@ defmodule Dotcom.TripPlan.AlertsTest do
       expect(MBTA.Api.Mock, :get_json, fn "/trips/" <> ^trip_id, [] ->
         %JsonApi{
           data: [
-            Test.Support.Factories.MBTA.Api.build(:trip_item, %{id: trip_id})
+            Api.build(:trip_item, %{id: trip_id})
           ]
         }
       end)
@@ -56,10 +60,10 @@ defmodule Dotcom.TripPlan.AlertsTest do
       good_alert =
         Alert.new(
           active_period: [valid_active_period(itinerary)],
-          informed_entity: [%IE{trip: trip_id}]
+          informed_entity: [%InformedEntity{trip: trip_id}]
         )
 
-      bad_alert = Alert.update(good_alert, informed_entity: [%IE{trip: "not_valid"}])
+      bad_alert = Alert.update(good_alert, informed_entity: [%InformedEntity{trip: "not_valid"}])
       assert_only_good_alert(good_alert, bad_alert, itinerary)
     end
 
@@ -70,7 +74,7 @@ defmodule Dotcom.TripPlan.AlertsTest do
       expect(MBTA.Api.Mock, :get_json, fn "/trips/" <> id, [] ->
         %JsonApi{
           data: [
-            Test.Support.Factories.MBTA.Api.build(:trip_item, %{
+            Api.build(:trip_item, %{
               id: id,
               attributes: %{"direction_id" => 1}
             })
@@ -81,11 +85,13 @@ defmodule Dotcom.TripPlan.AlertsTest do
       good_alert =
         Alert.new(
           active_period: [valid_active_period(itinerary)],
-          informed_entity: [%IE{route: route_id, direction_id: 1}]
+          informed_entity: [%InformedEntity{route: route_id, direction_id: 1}]
         )
 
       bad_alert =
-        Alert.update(good_alert, informed_entity: [%IE{route: route_id, direction_id: 0}])
+        Alert.update(good_alert,
+          informed_entity: [%InformedEntity{route: route_id, direction_id: 0}]
+        )
 
       assert_only_good_alert(good_alert, bad_alert, itinerary)
     end
@@ -97,7 +103,7 @@ defmodule Dotcom.TripPlan.AlertsTest do
       expect(MBTA.Api.Mock, :get_json, fn "/trips/" <> id, [] ->
         %JsonApi{
           data: [
-            Test.Support.Factories.MBTA.Api.build(:trip_item, %{id: id})
+            Api.build(:trip_item, %{id: id})
           ]
         }
       end)
@@ -105,10 +111,12 @@ defmodule Dotcom.TripPlan.AlertsTest do
       good_alert =
         Alert.new(
           active_period: [valid_active_period(itinerary)],
-          informed_entity: [%IE{route_type: route.type}]
+          informed_entity: [%InformedEntity{route_type: route.type}]
         )
 
-      bad_alert = Alert.update(good_alert, informed_entity: [%IE{route_type: route.type + 1}])
+      bad_alert =
+        Alert.update(good_alert, informed_entity: [%InformedEntity{route_type: route.type + 1}])
+
       assert_only_good_alert(good_alert, bad_alert, itinerary)
     end
 
@@ -116,7 +124,7 @@ defmodule Dotcom.TripPlan.AlertsTest do
       expect(MBTA.Api.Mock, :get_json, fn "/trips/" <> id, [] ->
         %JsonApi{
           data: [
-            Test.Support.Factories.MBTA.Api.build(:trip_item, %{id: id})
+            Api.build(:trip_item, %{id: id})
           ]
         }
       end)
@@ -126,11 +134,13 @@ defmodule Dotcom.TripPlan.AlertsTest do
       good_alert =
         Alert.new(
           active_period: [valid_active_period(itinerary)],
-          informed_entity: [%IE{stop: stop_id}]
+          informed_entity: [%InformedEntity{stop: stop_id}]
         )
 
       bad_alert =
-        Alert.update(good_alert, informed_entity: [%IE{stop: stop_id, route: "different route"}])
+        Alert.update(good_alert,
+          informed_entity: [%InformedEntity{stop: stop_id, route: "different route"}]
+        )
 
       assert_only_good_alert(good_alert, bad_alert, itinerary)
     end
@@ -139,7 +149,7 @@ defmodule Dotcom.TripPlan.AlertsTest do
       expect(MBTA.Api.Mock, :get_json, fn "/trips/" <> id, [] ->
         %JsonApi{
           data: [
-            Test.Support.Factories.MBTA.Api.build(:trip_item, %{id: id})
+            Api.build(:trip_item, %{id: id})
           ]
         }
       end)
@@ -147,7 +157,7 @@ defmodule Dotcom.TripPlan.AlertsTest do
       good_alert =
         Alert.new(
           active_period: [valid_active_period(itinerary)],
-          informed_entity: [%IE{route: route_id}]
+          informed_entity: [%InformedEntity{route: route_id}]
         )
 
       bad_alert = Alert.update(good_alert, active_period: [invalid_active_period(itinerary)])
diff --git a/test/dotcom/trip_plan/itinerary_row_list_test.exs b/test/dotcom/trip_plan/itinerary_row_list_test.exs
index 610fc3aa94..60ff7535c8 100644
--- a/test/dotcom/trip_plan/itinerary_row_list_test.exs
+++ b/test/dotcom/trip_plan/itinerary_row_list_test.exs
@@ -3,7 +3,8 @@ defmodule Dotcom.TripPlan.ItineraryRowListTest do
 
   import Dotcom.TripPlan.ItineraryRowList
   import Mox
-  import Test.Support.Factories.TripPlanner.TripPlanner
+
+  alias Test.Support.Factories.{Stops.Stop, TripPlanner.TripPlanner}
 
   @date_time ~N[2017-06-27T11:43:00]
 
@@ -23,7 +24,11 @@ defmodule Dotcom.TripPlan.ItineraryRowListTest do
         []
       end)
 
-      itinerary = build(:itinerary)
+      stub(Stops.Repo.Mock, :get, fn _ ->
+        Stop.build(:stop)
+      end)
+
+      itinerary = TripPlanner.build(:itinerary)
 
       stub(MBTA.Api.Mock, :get_json, fn "/trips" <> _, _ ->
         %JsonApi{data: [Test.Support.Factories.MBTA.Api.build(:trip_item)]}
@@ -33,14 +38,17 @@ defmodule Dotcom.TripPlan.ItineraryRowListTest do
     end
 
     test "ItineraryRow contains given stop name when no stop_id present" do
-      from = build(:stop_named_position, stop: nil)
-      to = build(:stop_named_position, stop: %Stops.Stop{id: "place-sstat"})
+      from = TripPlanner.build(:stop_named_position, stop: nil)
+      to = TripPlanner.build(:stop_named_position, stop: %Stops.Stop{id: "place-sstat"})
       date_time = ~N[2017-06-27T11:43:00]
 
       itinerary =
-        build(:itinerary,
+        TripPlanner.build(:itinerary,
           start: date_time,
-          legs: [build(:transit_leg, from: from), build(:transit_leg, to: to)]
+          legs: [
+            TripPlanner.build(:transit_leg, from: from),
+            TripPlanner.build(:transit_leg, to: to)
+          ]
         )
 
       itinerary_row_list = from_itinerary(itinerary)
@@ -105,7 +113,7 @@ defmodule Dotcom.TripPlan.ItineraryRowListTest do
     end
 
     test "Distance is given with personal steps", %{itinerary: itinerary} do
-      leg = build(:walking_leg)
+      leg = TripPlanner.build(:walking_leg)
       personal_itinerary = %{itinerary | legs: [leg]}
       row_list = from_itinerary(personal_itinerary)
 
@@ -132,12 +140,12 @@ defmodule Dotcom.TripPlan.ItineraryRowListTest do
     test "Does not replace to stop_id" do
       stop_id = Faker.Internet.slug()
       stop_name = Faker.Address.city()
-      to = build(:stop_named_position, stop: %Stops.Stop{id: stop_id})
+      to = TripPlanner.build(:stop_named_position, stop: %Stops.Stop{id: stop_id})
 
       itinerary = %TripPlan.Itinerary{
         start: nil,
         stop: nil,
-        legs: [build(:transit_leg, to: to)]
+        legs: [TripPlanner.build(:transit_leg, to: to)]
       }
 
       {name, id, _datetime, _alerts} =
diff --git a/test/dotcom/trip_plan/itinerary_row_test.exs b/test/dotcom/trip_plan/itinerary_row_test.exs
index e7fabef467..9c17c909b8 100644
--- a/test/dotcom/trip_plan/itinerary_row_test.exs
+++ b/test/dotcom/trip_plan/itinerary_row_test.exs
@@ -3,16 +3,23 @@ defmodule TripPlan.ItineraryRowTest do
 
   import Dotcom.TripPlan.ItineraryRow
   import Mox
-  import Test.Support.Factories.TripPlanner.TripPlanner
 
+  alias Alerts.{Alert, InformedEntity}
   alias Dotcom.TripPlan.ItineraryRow
   alias Routes.Route
-  alias Alerts.{Alert, InformedEntity}
-  alias Test.Support.Factories.MBTA.Api
+  alias Test.Support.Factories.{MBTA.Api, Stops.Stop, TripPlanner.TripPlanner}
   alias TripPlan.{Leg, NamedPosition, PersonalDetail}
 
   setup :verify_on_exit!
 
+  setup do
+    stub(Stops.Repo.Mock, :get, fn _ ->
+      Stop.build(:stop)
+    end)
+
+    :ok
+  end
+
   describe "route_id/1" do
     test "returns the route id when a route is present" do
       row = %ItineraryRow{route: %Route{id: "route"}}
@@ -318,8 +325,12 @@ defmodule TripPlan.ItineraryRowTest do
   end
 
   describe "from_leg/3" do
-    @personal_leg build(:walking_leg)
-    @transit_leg build(:transit_leg)
+    stub(Stops.Repo.Mock, :get, fn _ ->
+      Stop.build(:stop)
+    end)
+
+    @personal_leg TripPlanner.build(:walking_leg)
+    @transit_leg TripPlanner.build(:transit_leg)
 
     setup do
       stub(MBTA.Api.Mock, :get_json, fn path, _ ->
@@ -339,7 +350,7 @@ defmodule TripPlan.ItineraryRowTest do
     end
 
     test "returns an itinerary row from a Leg" do
-      leg = build(:transit_leg)
+      leg = TripPlanner.build(:transit_leg)
 
       stub(Stops.Repo.Mock, :get_parent, fn id ->
         %Stops.Stop{id: id}
diff --git a/test/dotcom/trip_plan/related_link_test.exs b/test/dotcom/trip_plan/related_link_test.exs
index 3f5b6aea43..a5cad6a72c 100644
--- a/test/dotcom/trip_plan/related_link_test.exs
+++ b/test/dotcom/trip_plan/related_link_test.exs
@@ -12,6 +12,10 @@ defmodule Dotcom.TripPlan.RelatedLinkTest do
   setup :verify_on_exit!
 
   setup do
+    stub(Stops.Repo.Mock, :get, fn _ ->
+      Stop.build(:stop)
+    end)
+
     itinerary =
       build(:itinerary,
         legs: [build(:transit_leg)]
diff --git a/test/dotcom_web/views/trip_plan_view_test.exs b/test/dotcom_web/views/trip_plan_view_test.exs
index 85aae5f7d8..53bea13075 100644
--- a/test/dotcom_web/views/trip_plan_view_test.exs
+++ b/test/dotcom_web/views/trip_plan_view_test.exs
@@ -8,7 +8,7 @@ defmodule DotcomWeb.TripPlanViewTest do
 
   alias Fares.Fare
   alias Dotcom.TripPlan.{IntermediateStop, ItineraryRow, Query}
-  alias Test.Support.Factories.TripPlanner.TripPlanner
+  alias Test.Support.Factories.{Stops.Stop, TripPlanner.TripPlanner}
   alias TripPlan.{Itinerary, Leg, NamedPosition, TransitDetail}
 
   @highest_one_way_fare %Fares.Fare{
@@ -77,6 +77,10 @@ defmodule DotcomWeb.TripPlanViewTest do
   setup :verify_on_exit!
 
   setup do
+    stub(Stops.Repo.Mock, :get, fn _ ->
+      Stop.build(:stop)
+    end)
+
     stub(MBTA.Api.Mock, :get_json, fn "/schedules/", [route: "Red", date: "1970-01-01"] ->
       {:error,
        [
diff --git a/test/trip_plan/itinerary_test.exs b/test/trip_plan/itinerary_test.exs
index 51cf938e89..c9605cc920 100644
--- a/test/trip_plan/itinerary_test.exs
+++ b/test/trip_plan/itinerary_test.exs
@@ -2,19 +2,24 @@ defmodule TripPlan.ItineraryTest do
   use ExUnit.Case, async: true
 
   import Mox
-  import Test.Support.Factories.TripPlanner.TripPlanner
   import TripPlan.Itinerary
 
-  alias TripPlan.{TransitDetail, Leg, PersonalDetail, TransitDetail}
+  alias Test
+  alias Test.Support.Factories.{Stops.Stop, TripPlanner.TripPlanner}
+  alias TripPlan.{Leg, PersonalDetail, TransitDetail}
 
-  @from build(:stop_named_position)
-  @to build(:stop_named_position)
-  @transit_leg build(:transit_leg, from: @from, to: @to)
+  @from TripPlanner.build(:stop_named_position)
+  @to TripPlanner.build(:stop_named_position)
 
   setup :verify_on_exit!
 
   setup do
-    itinerary = build(:itinerary, legs: [@transit_leg])
+    stub(Stops.Repo.Mock, :get, fn _ ->
+      Stop.build(:stop)
+    end)
+
+    transit_leg = TripPlanner.build(:transit_leg, from: @from, to: @to)
+    itinerary = TripPlanner.build(:itinerary, legs: [transit_leg])
     %{itinerary: itinerary}
   end
 
@@ -75,8 +80,8 @@ defmodule TripPlan.ItineraryTest do
   describe "positions/1" do
     test "returns all named positions for the itinerary" do
       itinerary =
-        build(:itinerary,
-          legs: build_list(3, :walking_leg, from: @from, to: @to)
+        TripPlanner.build(:itinerary,
+          legs: TripPlanner.build_list(3, :walking_leg, from: @from, to: @to)
         )
 
       [first, second, third] = itinerary.legs
diff --git a/test/trip_plan/leg_test.exs b/test/trip_plan/leg_test.exs
index 6592b6df5f..e2613759eb 100644
--- a/test/trip_plan/leg_test.exs
+++ b/test/trip_plan/leg_test.exs
@@ -1,60 +1,72 @@
 defmodule TripPlan.LegTest do
   use ExUnit.Case, async: true
 
-  import Test.Support.Factories.TripPlanner.TripPlanner
+  import Mox
   import TripPlan.Leg
 
-  alias Test.Support.Factories.{Routes.Route, Stops.Stop}
+  alias Test.Support.Factories.{Routes.Route, Stops.Stop, TripPlanner.TripPlanner}
 
-  @from build(:stop_named_position)
-  @to build(:stop_named_position)
+  @from TripPlanner.build(:stop_named_position)
+  @to TripPlanner.build(:stop_named_position)
   @start ~N[2017-01-01T00:00:00]
   @stop ~N[2017-01-01T23:59:59]
-  @personal_leg build(:walking_leg,
-                  from: @from,
-                  to: @to,
-                  start: @start,
-                  stop: @stop
-                )
-  @transit_leg build(:transit_leg,
-                 from: @from,
-                 to: @to,
-                 start: @start,
-                 stop: @stop
-               )
+
+  setup do
+    stub(Stops.Repo.Mock, :get, fn _ ->
+      Stop.build(:stop)
+    end)
+
+    personal_leg =
+      TripPlanner.build(:walking_leg,
+        from: @from,
+        to: @to,
+        start: @start,
+        stop: @stop
+      )
+
+    transit_leg =
+      TripPlanner.build(:transit_leg,
+        from: @from,
+        to: @to,
+        start: @start,
+        stop: @stop
+      )
+
+    {:ok, %{personal_leg: personal_leg, transit_leg: transit_leg}}
+  end
 
   describe "route_id/1" do
-    test "returns {:ok, id} for a transit leg" do
-      route_id = @transit_leg.mode.route.id
-      assert {:ok, ^route_id} = route_id(@transit_leg)
+    test "returns {:ok, id} for a transit leg", context do
+      route_id = context.transit_leg.mode.route.id
+      assert {:ok, ^route_id} = route_id(context.transit_leg)
     end
 
-    test "returns :error for a personal leg" do
-      assert :error = route_id(@personal_leg)
+    test "returns :error for a personal leg", context do
+      assert :error = route_id(context.personal_leg)
     end
   end
 
   describe "trip_id/1" do
-    test "returns {:ok, id} for a transit leg" do
-      trip_id = @transit_leg.mode.trip_id
-      assert {:ok, ^trip_id} = trip_id(@transit_leg)
+    test "returns {:ok, id} for a transit leg", context do
+      trip_id = context.transit_leg.mode.trip_id
+      assert {:ok, ^trip_id} = trip_id(context.transit_leg)
     end
 
-    test "returns :error for a personal leg" do
-      assert :error = trip_id(@personal_leg)
+    test "returns :error for a personal leg", context do
+      assert :error = trip_id(context.personal_leg)
     end
   end
 
   describe "stop_ids/1" do
-    test "returns the stop IDs @from and @to" do
-      assert [@from.stop.id, @to.stop.id] == stop_ids(@transit_leg)
+    test "returns the stop IDs @from and @to", context do
+      assert [@from.stop.id, @to.stop.id] == stop_ids(context.transit_leg)
     end
 
     test "ignores nil stop IDs" do
       from = %{@from | stop: nil}
 
       personal_leg =
-        build(:walking_leg,
+        TripPlanner.build(:walking_leg,
           from: from,
           to: @to,
           start: @start,
@@ -66,23 +78,23 @@ defmodule TripPlan.LegTest do
   end
 
   describe "transit?/1" do
-    test "Returns true for transit leg" do
-      assert transit?(@transit_leg)
+    test "Returns true for transit leg", context do
+      assert transit?(context.transit_leg)
     end
 
-    test "Returns false for personal leg" do
-      refute transit?(@personal_leg)
+    test "Returns false for personal leg", context do
+      refute transit?(context.personal_leg)
     end
   end
 
   describe "fare_complete_transit_leg?/1" do
     test "returns false for commuter rail routes between stops without commuter rail zone information" do
-      cr_mode = build(:transit_detail, route: Route.build(:route, %{type: 2}))
+      cr_mode = TripPlanner.build(:transit_detail, route: Route.build(:route, %{type: 2}))
 
       leg =
-        build(:transit_leg,
-          from: build(:stop_named_position, stop: Stop.build(:stop, %{zone: "2"})),
-          to: build(:stop_named_position, stop: Stop.build(:stop, %{zone: "5"})),
+        TripPlanner.build(:transit_leg,
+          from: TripPlanner.build(:stop_named_position, stop: Stop.build(:stop, %{zone: "2"})),
+          to: TripPlanner.build(:stop_named_position, stop: Stop.build(:stop, %{zone: "5"})),
           start: @start,
           stop: @stop,
           mode: cr_mode
@@ -91,9 +103,9 @@ defmodule TripPlan.LegTest do
       assert fare_complete_transit_leg?(leg)
 
       bad_leg =
-        build(:transit_leg,
-          from: build(:stop_named_position, stop: Stop.build(:stop, zone: nil)),
-          to: build(:stop_named_position, stop: Stop.build(:stop, zone: nil)),
+        TripPlanner.build(:transit_leg,
+          from: TripPlanner.build(:stop_named_position, stop: Stop.build(:stop, zone: nil)),
+          to: TripPlanner.build(:stop_named_position, stop: Stop.build(:stop, zone: nil)),
           start: @start,
           stop: @stop,
           mode: cr_mode
@@ -104,18 +116,18 @@ defmodule TripPlan.LegTest do
   end
 
   describe "stop_is_silver_line_airport?/2" do
-    test "stop is not the Silver Line" do
-      assert stop_is_silver_line_airport?([@transit_leg], :from) == false
+    test "stop is not the Silver Line", context do
+      assert stop_is_silver_line_airport?([context.transit_leg], :from) == false
     end
 
     test "stop is the Silver Line" do
       leg =
-        build(:transit_leg,
-          from: build(:stop_named_position, stop: Stop.build(:stop, %{id: "17091"})),
+        TripPlanner.build(:transit_leg,
+          from: TripPlanner.build(:stop_named_position, stop: Stop.build(:stop, %{id: "17091"})),
           to: @to,
           start: @start,
           stop: @stop,
-          mode: build(:transit_detail, route: %Routes.Route{id: "741"})
+          mode: TripPlanner.build(:transit_detail, route: %Routes.Route{id: "741"})
         )
 
       assert stop_is_silver_line_airport?([leg], :from) == true
diff --git a/test/trip_plan/transfer_test.exs b/test/trip_plan/transfer_test.exs
index 512716556c..7da55e5230 100644
--- a/test/trip_plan/transfer_test.exs
+++ b/test/trip_plan/transfer_test.exs
@@ -3,20 +3,28 @@ defmodule TransferTest do
 
   import Mox
   import TripPlan.Transfer
-  import Test.Support.Factories.TripPlanner.TripPlanner
 
+  alias Test.Support.Factories.{Stops.Stop, TripPlanner.TripPlanner}
   alias TripPlan.{Leg, NamedPosition, PersonalDetail, TransitDetail}
 
   setup :verify_on_exit!
 
+  setup do
+    stub(Stops.Repo.Mock, :get, fn _ ->
+      Stop.build(:stop)
+    end)
+
+    :ok
+  end
+
   describe "maybe_transfer?/1 correctly identifies the potential presence of a transfer [assumes single ride media]" do
-    defp bus_leg, do: build(:bus_leg)
-    defp subway_leg, do: build(:subway_leg)
-    defp cr_leg, do: build(:cr_leg)
-    defp ferry_leg, do: build(:ferry_leg)
-    defp xp_leg, do: build(:express_bus_leg)
-    defp sl_rapid_leg, do: build(:sl_rapid_leg)
-    defp shuttle_leg, do: build(:shuttle_leg)
+    defp bus_leg, do: TripPlanner.build(:bus_leg)
+    defp subway_leg, do: TripPlanner.build(:subway_leg)
+    defp cr_leg, do: TripPlanner.build(:cr_leg)
+    defp ferry_leg, do: TripPlanner.build(:ferry_leg)
+    defp xp_leg, do: TripPlanner.build(:express_bus_leg)
+    defp sl_rapid_leg, do: TripPlanner.build(:sl_rapid_leg)
+    defp shuttle_leg, do: TripPlanner.build(:shuttle_leg)
 
     test "if from or to is nil" do
       refute [nil, nil] |> maybe_transfer?