48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
|
|
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)
|
||
|
|
|