datahub/metadata-ingestion/tests/unit/config/test_datetime_parser.py
Mayuri Nehate 8047d0b514
feat(ingest/snowflake): generate query nodes for snowflake (#9966)
Co-authored-by: Harshal Sheth <hsheth2@gmail.com>
2024-03-06 15:11:37 -08:00

56 lines
1.8 KiB
Python

from datetime import datetime, timezone
import freezegun
import pytest
from datahub.configuration.datetimes import parse_user_datetime
# FIXME: Ideally we'd use tz_offset here to test this code in a non-UTC timezone.
# However, freezegun has a long-standing bug that prevents this from working:
# https://github.com/spulec/freezegun/issues/348.
@freezegun.freeze_time("2021-09-01 10:02:03")
def test_user_time_parser():
# Absolute times.
assert parse_user_datetime("2022-01-01 01:02:03 UTC") == datetime(
2022, 1, 1, 1, 2, 3, tzinfo=timezone.utc
)
assert parse_user_datetime("2022-01-01 01:02:03 -02:00") == datetime(
2022, 1, 1, 3, 2, 3, tzinfo=timezone.utc
)
assert parse_user_datetime("2024-03-01 00:46:33.000 -0800") == datetime(
2024, 3, 1, 8, 46, 33, tzinfo=timezone.utc
)
# Times with no timestamp are assumed to be in UTC.
assert parse_user_datetime("2022-01-01 01:02:03") == datetime(
2022, 1, 1, 1, 2, 3, tzinfo=timezone.utc
)
assert parse_user_datetime("2022-02-03") == datetime(
2022, 2, 3, tzinfo=timezone.utc
)
# Timestamps.
assert parse_user_datetime("1630440123") == datetime(
2021, 8, 31, 20, 2, 3, tzinfo=timezone.utc
)
assert parse_user_datetime("1630440123837.018") == datetime(
2021, 8, 31, 20, 2, 3, 837018, tzinfo=timezone.utc
)
# Relative times.
assert parse_user_datetime("10m") == datetime(
2021, 9, 1, 10, 12, 3, tzinfo=timezone.utc
)
assert parse_user_datetime("+ 1 day") == datetime(
2021, 9, 2, 10, 2, 3, tzinfo=timezone.utc
)
assert parse_user_datetime("-2 days") == datetime(
2021, 8, 30, 10, 2, 3, tzinfo=timezone.utc
)
# Invalid inputs.
with pytest.raises(ValueError):
parse_user_datetime("invalid")