Skip to content

Commit 7594524

Browse files
authored
Fix CLI JSON currency serialization (#101)
* fix: Preserve returned CLI JSON currency Jira: PLAF-00000 * fix: Add round-trip currency regression test Jira: PLAF-00000
1 parent a04c42b commit 7594524

2 files changed

Lines changed: 35 additions & 3 deletions

File tree

fli/cli/utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ def _serialize_flight_segment_result(flight: Any, *, include_price: bool = False
196196
}
197197
if include_price:
198198
payload["price"] = flight.price
199-
payload["currency"] = DEFAULT_CURRENCY
199+
payload["currency"] = flight.currency or DEFAULT_CURRENCY
200200
return payload
201201

202202

@@ -206,7 +206,7 @@ def serialize_flight_result(flight_data: Any) -> dict[str, Any]:
206206
outbound, return_flight = flight_data
207207
return {
208208
"price": outbound.price,
209-
"currency": DEFAULT_CURRENCY,
209+
"currency": outbound.currency or DEFAULT_CURRENCY,
210210
"duration": outbound.duration + return_flight.duration,
211211
"stops": outbound.stops + return_flight.stops,
212212
"outbound": _serialize_flight_segment_result(outbound),
@@ -222,7 +222,7 @@ def serialize_date_result(date_result: Any, trip_type: TripType) -> dict[str, An
222222
"departure_date": date_result.date[0].date().isoformat(),
223223
"return_date": None,
224224
"price": date_result.price,
225-
"currency": DEFAULT_CURRENCY,
225+
"currency": date_result.currency or DEFAULT_CURRENCY,
226226
}
227227
if trip_type == TripType.ROUND_TRIP and len(date_result.date) > 1:
228228
payload["return_date"] = date_result.date[1].date().isoformat()

tests/cli/test_utils.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,3 +337,35 @@ def test_serialize_date_result_round_trip():
337337
"price": 599.98,
338338
"currency": "USD",
339339
}
340+
341+
342+
def test_serialize_flight_result_uses_returned_currency():
343+
"""JSON flight serialization should preserve the parsed result currency."""
344+
flight = _make_flight_result(price=159.0, currency="SEK")
345+
346+
payload = serialize_flight_result(flight)
347+
348+
assert payload["currency"] == "SEK"
349+
350+
351+
def test_serialize_flight_result_round_trip_uses_returned_currency():
352+
"""Round-trip JSON serialization should preserve the parsed result currency."""
353+
outbound = _make_flight_result(price=2534.0, currency="SEK", flight_number="SK101")
354+
return_flight = _make_flight_result(price=2534.0, currency="SEK", flight_number="SK202")
355+
356+
payload = serialize_flight_result((outbound, return_flight))
357+
358+
assert payload["currency"] == "SEK"
359+
360+
361+
def test_serialize_date_result_uses_returned_currency():
362+
"""JSON date serialization should preserve the parsed result currency."""
363+
result = DatePrice(
364+
date=(datetime(2026, 5, 1),),
365+
price=118.0,
366+
currency="SEK",
367+
)
368+
369+
payload = serialize_date_result(result, TripType.ONE_WAY)
370+
371+
assert payload["currency"] == "SEK"

0 commit comments

Comments
 (0)