diff --git a/lib/utils/flight_plan_utils.test.ts b/lib/utils/flight_plan_utils.test.ts new file mode 100644 index 0000000..1c80f21 --- /dev/null +++ b/lib/utils/flight_plan_utils.test.ts @@ -0,0 +1,28 @@ +import { DecodeResult } from '../DecoderPluginInterface'; +import { FlightPlanUtils } from './flight_plan_utils'; + +describe('FlightPlanUtils.parseHeader', () => { + test('keeps RP as route_status while parsing embedded route content', () => { + const decodeResult: DecodeResult = { + decoded: true, + decoder: { name: 'test', type: 'pattern-match', decodeLevel: 'full' }, + formatted: { description: 'Test', items: [] }, + raw: {}, + remaining: {}, + }; + + const allKnownFields = FlightPlanUtils.parseHeader( + decodeResult, + 'RPKSEA.BTG.KPDX', + ); + + expect(allKnownFields).toBe(true); + expect(decodeResult.raw.route_status).toBe('RP'); + expect( + decodeResult.raw.route?.waypoints.map((waypoint) => waypoint.name), + ).toEqual(['KSEA', 'BTG', 'KPDX']); + expect(decodeResult.formatted.items).toHaveLength(2); + expect(decodeResult.formatted.items[0].value).toBe('Route Planned'); + expect(decodeResult.formatted.items[1].label).toBe('Aircraft Route'); + }); +}); diff --git a/lib/utils/flight_plan_utils.ts b/lib/utils/flight_plan_utils.ts index 7294adb..4eb9f1d 100644 --- a/lib/utils/flight_plan_utils.ts +++ b/lib/utils/flight_plan_utils.ts @@ -87,7 +87,9 @@ export class FlightPlanUtils { label: 'Route Status', value: 'Route Planned', }); - decodeResult.raw.route_status = header; + if (header.length > 2) { + addRoute(decodeResult, header.substring(2)); + } } else if (header.startsWith('RI')) { decodeResult.raw.route_status = 'RI'; decodeResult.formatted.items.push({