diff options
Diffstat (limited to 'tests/testing/test_time_travel.py')
-rw-r--r-- | tests/testing/test_time_travel.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/testing/test_time_travel.py b/tests/testing/test_time_travel.py new file mode 100644 index 0000000..dd496e3 --- /dev/null +++ b/tests/testing/test_time_travel.py @@ -0,0 +1,85 @@ +from __future__ import annotations + +from time import sleep +from typing import TYPE_CHECKING + +import pytest + +import pendulum + +from pendulum.utils._compat import PYPY + +if TYPE_CHECKING: + from typing import Generator + + +@pytest.fixture(autouse=True) +def setup() -> Generator[None, None, None]: + pendulum.travel_back() + + yield + + pendulum.travel_back() + + +@pytest.mark.skipif(PYPY, reason="Time travelling not available on PyPy") +def test_travel() -> None: + now = pendulum.now() + + pendulum.travel(minutes=5) + + assert pendulum.now().diff_for_humans(now) == "5 minutes after" + + +@pytest.mark.skipif(PYPY, reason="Time travelling not available on PyPy") +def test_travel_with_frozen_time() -> None: + pendulum.travel(minutes=5, freeze=True) + + now = pendulum.now() + + sleep(0.01) + + assert now == pendulum.now() + + +@pytest.mark.skipif(PYPY, reason="Time travelling not available on PyPy") +def test_travel_to() -> None: + dt = pendulum.datetime(2022, 1, 19, tz="local") + + pendulum.travel_to(dt) + + assert pendulum.now().date() == dt.date() + + +@pytest.mark.skipif(PYPY, reason="Time travelling not available on PyPy") +def test_freeze() -> None: + pendulum.freeze() + + pendulum.travel(minutes=5) + + assert pendulum.now() == pendulum.now() + + pendulum.travel_back() + + pendulum.travel(minutes=5) + + now = pendulum.now() + + sleep(0.01) + + assert now != pendulum.now() + + pendulum.freeze() + + assert pendulum.now() == pendulum.now() + + pendulum.travel_back() + + with pendulum.freeze(): + assert pendulum.now() == pendulum.now() + + now = pendulum.now() + + sleep(0.01) + + assert now != pendulum.now() |