from datetime import datetime import pytest from services.common.datetime_utils import DateTimeGenerator def test_datetime_generator_supports_10_digit_timestamp(): bundle = DateTimeGenerator.bundle("1710912000") assert bundle.epoch_seconds == 1710912000 assert bundle.epoch_millis == 1710912000000 def test_datetime_generator_supports_13_digit_timestamp(): bundle = DateTimeGenerator.bundle("1710912000123") assert bundle.epoch_millis == 1710912000123 def test_datetime_generator_supports_yyyymmdd(): bundle = DateTimeGenerator.bundle("20260320") assert bundle.yyyymmdd == "20260320" assert bundle.date_str == "2026-03-20" def test_datetime_generator_supports_date_and_datetime_formats(): from_date = DateTimeGenerator.bundle("2026-03-20") from_dt = DateTimeGenerator.bundle("2026-03-20 11:27:53") assert from_date.date_str == "2026-03-20" assert from_dt.datetime_str == "2026-03-20 11:27:53" def test_datetime_generator_supports_iso_and_datetime_objects(): from_iso = DateTimeGenerator.bundle("2026-03-20T11:27:53") from_obj = DateTimeGenerator.bundle(datetime(2026, 3, 20, 11, 27, 53)) assert from_iso.date_str == "2026-03-20" assert from_obj.datetime_str == "2026-03-20 11:27:53" def test_datetime_generator_invalid_value_behaviour(): fallback = DateTimeGenerator.bundle("not-a-date") assert fallback.epoch_millis > 0 with pytest.raises(ValueError): DateTimeGenerator.bundle("not-a-date", default_to_now=False)