From 2ca6045acfe634f9a5683474074be1a81735650b Mon Sep 17 00:00:00 2001 From: Eddie Maldonado Date: Fri, 10 Jan 2025 15:02:40 -0500 Subject: [PATCH] feat: update schedule relationship of Cancelled STUs --- lib/concentrate/parser/gtfs_realtime_enhanced.ex | 9 ++++++++- .../parser/gtfs_realtime_enhanced_test.exs | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/concentrate/parser/gtfs_realtime_enhanced.ex b/lib/concentrate/parser/gtfs_realtime_enhanced.ex index c34d6a47..469f1fbf 100644 --- a/lib/concentrate/parser/gtfs_realtime_enhanced.ex +++ b/lib/concentrate/parser/gtfs_realtime_enhanced.ex @@ -150,12 +150,19 @@ defmodule Concentrate.Parser.GTFSRealtimeEnhanced do boarding_status = decode_boarding_status(Map.get(stu, "boarding_status")) + schedule_relationship = + if boarding_status == "Cancelled" do + :SKIPPED + else + schedule_relationship(Map.get(stu, "schedule_relationship")) + end + StopTimeUpdate.new( trip_id: if(descriptor = Map.get(trip_update, "trip"), do: Map.get(descriptor, "trip_id")), stop_id: Map.get(stu, "stop_id"), stop_sequence: Map.get(stu, "stop_sequence"), - schedule_relationship: schedule_relationship(Map.get(stu, "schedule_relationship")), + schedule_relationship: schedule_relationship, arrival_time: arrival_time, departure_time: departure_time, passthrough_time: Map.get(stu, "passthrough_time"), diff --git a/test/concentrate/parser/gtfs_realtime_enhanced_test.exs b/test/concentrate/parser/gtfs_realtime_enhanced_test.exs index e4b787ac..2e708d76 100644 --- a/test/concentrate/parser/gtfs_realtime_enhanced_test.exs +++ b/test/concentrate/parser/gtfs_realtime_enhanced_test.exs @@ -221,6 +221,20 @@ defmodule Concentrate.Parser.GTFSRealtimeEnhancedTest do assert StopTimeUpdate.status(stop_update) == "UNIQUE STATUS" end + test "handles cancelled status" do + update = %{ + "trip" => %{}, + "stop_time_update" => [ + %{ + "boarding_status" => "CANCELLED" + } + ] + } + + [_td, stop_update] = decode_trip_update(update, %Options{}) + assert StopTimeUpdate.schedule_relationship(stop_update) == :SKIPPED + end + test "can handle platform id information" do update = %{ "trip" => %{},