summaryrefslogtreecommitdiffstats
path: root/tests/testing/test_time_travel.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-01-05 10:38:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-01-05 10:38:34 +0000
commite3bdad36cc3a1a00c1e6772ca1c1898085ab73e0 (patch)
tree34512072a667ae716fd262e7b37e733e60fe4d89 /tests/testing/test_time_travel.py
parentAdding upstream version 2.1.2. (diff)
downloadpendulum-e3bdad36cc3a1a00c1e6772ca1c1898085ab73e0.tar.xz
pendulum-e3bdad36cc3a1a00c1e6772ca1c1898085ab73e0.zip
Adding upstream version 3.0.0~a1.upstream/3.0.0_a1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/testing/test_time_travel.py')
-rw-r--r--tests/testing/test_time_travel.py85
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()