import datetime import zoneinfo import pytest from fansifter_common.utils import timezone @pytest.mark.parametrize( "value, expected", [ ( datetime.datetime(2021, 6, 28, 10, 10, 10), datetime.datetime( 2021, 6, 28, 10, 10, 10, tzinfo=timezone.UTC, ), ), ( datetime.datetime( 2021, 6, 28, 10, 10, 10, tzinfo=timezone.UTC, ), datetime.datetime( 2021, 6, 28, 10, 10, 10, tzinfo=timezone.UTC, ), ), ( datetime.datetime( 2021, 6, 28, 10, 10, 10, tzinfo=zoneinfo.ZoneInfo("Europe/Tallinn"), ), datetime.datetime( 2021, 6, 28, 7, 10, 10, tzinfo=timezone.UTC, ), ), ], ) def test_utcdatetime_to_aware( value: datetime.datetime, expected: datetime.datetime ) -> None: assert timezone.to_aware(value) == expected @pytest.mark.parametrize( "value, expected", [ ( datetime.datetime( 2021, 6, 28, 10, 10, 10, tzinfo=timezone.UTC, ), datetime.datetime( 2021, 6, 28, 10, 10, 10, tzinfo=None, ), ), ( datetime.datetime( 2021, 6, 28, 10, 10, 10, tzinfo=zoneinfo.ZoneInfo("Europe/Tallinn"), ), datetime.datetime( 2021, 6, 28, 7, 10, 10, tzinfo=None, ), ), ], ) def test_utcdatetime_to_naive( value: datetime.datetime, expected: datetime.datetime ) -> None: assert timezone.to_naive(value) == expected def test_utcdatetime_to_naive_from_naive() -> None: with pytest.raises(ValueError, match="Cannot be applied to a naive datetime"): timezone.to_naive(datetime.datetime.now())