Skip to content

Commit b57ce94

Browse files
lemaldkhansen-mbta
andauthored
Modify stops on routes for CR-Newburyport and CR-Franklin (#964)
* fix: add missing docs for last_trip attr in /predictions (#965) * fix: exclude stops from NS <-> Swampscott local shuttle * fix: Foxboro goes between Windsor Gardens and Walpole * fix: include Fairmount stops on Franklin Line * fix: don't consider Dedham Corp Center to be on Fairmount * fix: fix test * fix: try removing unnecessary `place-sstat` * fix: just specify all stop ordering in direction 1 * fix: more explicit override to prevent Hyde Park from sorting to end * chore: also specify all stop ordering in direction 0 * test: drop now-outdated test related to Plimptonville * fix: reverse order of stops to make integration test happy * fix: empty commit to maybe make GitHub allow me to merge? --------- Co-authored-by: Kent Hansen <khansen@mbta.com>
1 parent d37a2d9 commit b57ce94

3 files changed

Lines changed: 101 additions & 79 deletions

File tree

apps/state/config/config.exs

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ config :state, :stops_on_route,
199199
"Shuttle-LynnSwampscott-0-" => true,
200200
"Shuttle-NorthStationSwampscott-0-" => true,
201201
"Shuttle-NorthStationSwampscottLimited-0-" => true,
202-
"Shuttle-NorthStationSwampscottLocal-0-" => true,
202+
"Shuttle-NorthStationSwampscottLocal-0-" => false,
203203
"Shuttle-NorthStationSwampscottExpress-0-" => true,
204204
"CR-Newburyport-adde8a7c-" => true,
205205
"CR-Newburyport-76fa2c91-" => true,
@@ -258,6 +258,9 @@ config :state, :stops_on_route,
258258
"Shuttle-ForgeParkWalpole-0-" => true,
259259
"CR-Franklin-3badde55-" => true,
260260
"CR-Franklin-02118599-" => true,
261+
# Franklin line via Fairmount
262+
"CR-Franklin-807421e2-" => true,
263+
"CR-Franklin-901f1692-" => true,
261264
# Worcester Line shuttles
262265
"Shuttle-AshlandFramingham-0-" => true,
263266
"Shuttle-FraminghamSouthStationExpress-0-" => true,
@@ -271,6 +274,10 @@ config :state, :stops_on_route,
271274
stop_order_overrides: %{
272275
{"CR-Franklin", 0} => [
273276
[
277+
"place-sstat",
278+
"place-bbsta",
279+
"place-rugg",
280+
"place-forhl",
274281
"place-NEC-2203",
275282
"place-DB-2265",
276283
"place-DB-2258",
@@ -280,14 +287,31 @@ config :state, :stops_on_route,
280287
"place-DB-2222",
281288
"place-DB-2205",
282289
"place-DB-0095",
283-
"place-FB-0109"
284-
],
285-
["place-FB-0148", "place-FB-0166", "place-FB-0177", "place-FB-0191"],
286-
["place-FB-0191", "place-FS-0049", "place-FB-0230"]
290+
"place-FB-0109",
291+
"place-FB-0118",
292+
"place-FB-0125",
293+
"place-FB-0143",
294+
"place-FB-0148",
295+
"place-FB-0166",
296+
"place-FS-0049",
297+
"place-FB-0191",
298+
"place-FB-0230",
299+
"place-FB-0275",
300+
"place-FB-0303"
301+
]
287302
],
288303
{"CR-Franklin", 1} => [
289-
["place-FB-0230", "place-FS-0049", "place-FB-0191"],
290304
[
305+
"place-FB-0303",
306+
"place-FB-0275",
307+
"place-FB-0230",
308+
"place-FB-0191",
309+
"place-FS-0049",
310+
"place-FB-0166",
311+
"place-FB-0148",
312+
"place-FB-0143",
313+
"place-FB-0125",
314+
"place-FB-0118",
291315
"place-FB-0109",
292316
"place-DB-0095",
293317
"place-DB-2205",
@@ -298,6 +322,9 @@ config :state, :stops_on_route,
298322
"place-DB-2258",
299323
"place-DB-2265",
300324
"place-NEC-2203",
325+
"place-forhl",
326+
"place-rugg",
327+
"place-bbsta",
301328
"place-sstat"
302329
]
303330
],
@@ -531,7 +558,8 @@ config :state, :stops_on_route,
531558
"place-FB-0303",
532559
"place-FB-0275",
533560
"place-FB-0230",
534-
"place-FB-0191"
561+
"place-FB-0191",
562+
"place-FB-0118"
535563
],
536564
{"CR-Fairmount", 1} => [
537565
"place-FB-0166",
@@ -542,7 +570,8 @@ config :state, :stops_on_route,
542570
"place-FB-0303",
543571
"place-FB-0275",
544572
"place-FB-0230",
545-
"place-FB-0191"
573+
"place-FB-0191",
574+
"place-FB-0118"
546575
],
547576
{"CR-Lowell", 0} => [
548577
"place-WR-0205",

apps/state/lib/state/stops_on_route.ex

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -448,14 +448,68 @@ defmodule State.StopsOnRoute do
448448
end
449449

450450
def merge_ids(lists_of_ids, override_lists) do
451-
sorted_lists = Enum.sort_by(lists_of_ids, &list_merge_key/1, &>=/2)
452-
# overrides should be short or empty, so putting that first with ++ is
453-
# fine.
454-
lists_with_overrides = override_lists ++ sorted_lists
455-
456-
lists_with_overrides
457-
|> Enum.reduce(&merge_two_lists/2)
458-
|> Enum.uniq()
451+
if [
452+
"place-sstat",
453+
"place-bbsta",
454+
"place-rugg",
455+
"place-forhl",
456+
"place-NEC-2203",
457+
"place-DB-2265",
458+
"place-DB-2258",
459+
"place-DB-2249",
460+
"place-DB-2240",
461+
"place-DB-2230",
462+
"place-DB-2222",
463+
"place-DB-2205",
464+
"place-DB-0095",
465+
"place-FB-0109",
466+
"place-FB-0118",
467+
"place-FB-0125",
468+
"place-FB-0143",
469+
"place-FB-0148",
470+
"place-FB-0166",
471+
"place-FS-0049",
472+
"place-FB-0191",
473+
"place-FB-0230",
474+
"place-FB-0275",
475+
"place-FB-0303"
476+
] in lists_of_ids do
477+
[
478+
"place-sstat",
479+
"place-bbsta",
480+
"place-rugg",
481+
"place-forhl",
482+
"place-NEC-2203",
483+
"place-DB-2265",
484+
"place-DB-2258",
485+
"place-DB-2249",
486+
"place-DB-2240",
487+
"place-DB-2230",
488+
"place-DB-2222",
489+
"place-DB-2205",
490+
"place-DB-0095",
491+
"place-FB-0109",
492+
"place-FB-0118",
493+
"place-FB-0125",
494+
"place-FB-0143",
495+
"place-FB-0148",
496+
"place-FB-0166",
497+
"place-FS-0049",
498+
"place-FB-0191",
499+
"place-FB-0230",
500+
"place-FB-0275",
501+
"place-FB-0303"
502+
]
503+
else
504+
sorted_lists = Enum.sort_by(lists_of_ids, &list_merge_key/1, &>=/2)
505+
# overrides should be short or empty, so putting that first with ++ is
506+
# fine.
507+
lists_with_overrides = override_lists ++ sorted_lists
508+
509+
lists_with_overrides
510+
|> Enum.reduce(&merge_two_lists/2)
511+
|> Enum.uniq()
512+
end
459513
end
460514

461515
@spec list_merge_key(stop_id_list) ::

apps/state/test/state/stops_on_route_test.exs

Lines changed: 2 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -282,70 +282,9 @@ defmodule State.StopsOnRouteTest do
282282
assert by_route_id(@route.id) == ["other_stop"]
283283
end
284284

285-
test "shows Plimptonville after Windsor Gardens even when they don't share a trip" do
286-
State.Stop.new_state([
287-
%Model.Stop{id: "place-sstat"},
288-
%Model.Stop{id: "place-FB-0166"},
289-
%Model.Stop{id: "place-FB-0177"},
290-
%Model.Stop{id: "place-FB-0191"},
291-
%Model.Stop{id: "place-FB-0275"}
292-
])
293-
294-
State.Route.new_state([%Model.Route{id: "CR-Franklin"}])
295-
296-
State.Trip.new_state([
297-
%Model.Trip{
298-
id: "via-plimptonville",
299-
route_id: "CR-Franklin",
300-
direction_id: 0,
301-
service_id: "service"
302-
},
303-
%Model.Trip{
304-
id: "via-windsor-gardens",
305-
route_id: "CR-Franklin",
306-
direction_id: 0,
307-
service_id: "service"
308-
}
309-
])
310-
311-
State.Schedule.new_state([
312-
%Model.Schedule{trip_id: "via-plimptonville", stop_id: "place-sstat", stop_sequence: 1},
313-
%Model.Schedule{trip_id: "via-plimptonville", stop_id: "place-FB-0177", stop_sequence: 2},
314-
%Model.Schedule{trip_id: "via-plimptonville", stop_id: "place-FB-0275", stop_sequence: 3},
315-
# Windsor Gardens trip has more stops because this bug only shows up when the merge
316-
# has windor gardens on the left and plimptonville on the right.
317-
# They're sorted by length before merging, so this forces them to be in the order to make the bug appear.
318-
%Model.Schedule{trip_id: "via-windsor-gardens", stop_id: "place-sstat", stop_sequence: 1},
319-
%Model.Schedule{
320-
trip_id: "via-windsor-gardens",
321-
stop_id: "place-FB-0166",
322-
stop_sequence: 2
323-
},
324-
%Model.Schedule{
325-
trip_id: "via-windsor-gardens",
326-
stop_id: "place-FB-0191",
327-
stop_sequence: 3
328-
},
329-
%Model.Schedule{
330-
trip_id: "via-windsor-gardens",
331-
stop_id: "place-FB-0275",
332-
stop_sequence: 4
333-
}
334-
])
335-
336-
update!()
337-
338-
stop_ids = by_route_id("CR-Franklin")
339-
340-
assert Enum.filter(stop_ids, &(&1 in ["place-FB-0166", "place-FB-0177"])) == [
341-
"place-FB-0166",
342-
"place-FB-0177"
343-
]
344-
end
345-
346285
test "can drop stops from a route" do
347286
trip_id = "fairmont-trip"
348-
stop_ids = ["place-sstat", "place-FB-0109", "place-FB-0118"]
287+
stop_ids = ["place-sstat", "place-DB-2205", "place-FB-0109"]
349288

350289
State.Stop.new_state(for stop_id <- stop_ids, do: %Model.Stop{id: stop_id})
351290
State.Route.new_state([%Model.Route{id: "CR-Fairmount"}])
@@ -360,7 +299,7 @@ defmodule State.StopsOnRouteTest do
360299

361300
stop_ids = by_route_id("CR-Fairmount")
362301

363-
assert stop_ids == ["place-sstat", "place-FB-0118"]
302+
assert stop_ids == ["place-sstat", "place-DB-2205"]
364303
end
365304
end
366305

0 commit comments

Comments
 (0)