diff --git a/importer/orders.py b/importer/orders.py index 4ba7e63..ffbcd12 100644 --- a/importer/orders.py +++ b/importer/orders.py @@ -1,6 +1,8 @@ import csv from pathlib import Path +from dateutil.parser import isoparse + def load_orders(path: Path) -> list[dict]: with path.open(newline="", encoding="utf-8") as fh: @@ -8,7 +10,7 @@ def load_orders(path: Path) -> list[dict]: { "id": row["id"], "total_cents": int(row["total_cents"]), - "created_at": row["created_at"], + "created_at": isoparse(row["created_at"]), } for row in csv.DictReader(fh) ] diff --git a/requirements.txt b/requirements.txt index d80d9fc..393299e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ requests==2.32.3 +python-dateutil==2.9.0.post0 diff --git a/tests/test_orders.py b/tests/test_orders.py index 42f627c..058f8ba 100644 --- a/tests/test_orders.py +++ b/tests/test_orders.py @@ -1,3 +1,5 @@ +from datetime import datetime, timezone + from importer.orders import load_orders @@ -5,3 +7,11 @@ def test_loads_totals(tmp_path): f = tmp_path / "orders.csv" f.write_text("id,total_cents,created_at\nA1,1999,2026-05-01T14:03:00+00:00\n") assert load_orders(f)[0]["total_cents"] == 1999 + + +def test_parses_created_at_as_aware_datetime(tmp_path): + f = tmp_path / "orders.csv" + f.write_text("id,total_cents,created_at\nA1,1999,2026-05-01T14:03:00+00:00\n") + created = load_orders(f)[0]["created_at"] + assert created == datetime(2026, 5, 1, 14, 3, tzinfo=timezone.utc) + assert created.tzinfo is not None