cookiecutter

Форк
0
/
test_time_extension.py 
79 строк · 2.5 Кб
1
"""Tests for the TimeExtension Jinja2 extension."""
2

3
import freezegun
4
import pytest
5
from jinja2 import Environment, exceptions
6

7

8
@pytest.fixture
9
def environment():
10
    """Fixture. Add tested extension to environment."""
11
    return Environment(extensions=['cookiecutter.extensions.TimeExtension'])  # noqa: S701
12

13

14
@pytest.fixture(autouse=True)
15
def freeze():
16
    """Fixture. Freeze time for all tests."""
17
    freezer = freezegun.freeze_time("2015-12-09 23:33:01")
18
    freezer.start()
19
    yield
20
    freezer.stop()
21

22

23
def test_tz_is_required(environment) -> None:
24
    """Verify template parsing fails without a timezone."""
25
    with pytest.raises(exceptions.TemplateSyntaxError):
26
        environment.from_string('{% now %}')
27

28

29
def test_utc_default_datetime_format(environment) -> None:
30
    """Verify default datetime format can be parsed."""
31
    template = environment.from_string("{% now 'utc' %}")
32

33
    assert template.render() == "2015-12-09"
34

35

36
@pytest.mark.parametrize("valid_tz", ['utc', 'local', 'Europe/Berlin'])
37
def test_accept_valid_timezones(environment, valid_tz) -> None:
38
    """Verify that valid timezones are accepted."""
39
    template = environment.from_string(f"{{% now '{valid_tz}', '%Y-%m' %}}")
40

41
    assert template.render() == '2015-12'
42

43

44
def test_environment_datetime_format(environment) -> None:
45
    """Verify datetime format can be parsed from environment."""
46
    environment.datetime_format = '%a, %d %b %Y %H:%M:%S'
47

48
    template = environment.from_string("{% now 'utc' %}")
49

50
    assert template.render() == "Wed, 09 Dec 2015 23:33:01"
51

52

53
def test_add_time(environment) -> None:
54
    """Verify that added time offset can be parsed."""
55
    environment.datetime_format = '%a, %d %b %Y %H:%M:%S'
56

57
    template = environment.from_string("{% now 'utc' + 'hours=2,seconds=30' %}")
58

59
    assert template.render() == "Thu, 10 Dec 2015 01:33:31"
60

61

62
def test_substract_time(environment) -> None:
63
    """Verify that substracted time offset can be parsed."""
64
    environment.datetime_format = '%a, %d %b %Y %H:%M:%S'
65

66
    template = environment.from_string("{% now 'utc' - 'minutes=11' %}")
67

68
    assert template.render() == "Wed, 09 Dec 2015 23:22:01"
69

70

71
def test_offset_with_format(environment) -> None:
72
    """Verify that offset works together with datetime format."""
73
    environment.datetime_format = '%d %b %Y %H:%M:%S'
74

75
    template = environment.from_string(
76
        "{% now 'utc' - 'days=2,minutes=33,seconds=1', '%d %b %Y %H:%M:%S' %}"
77
    )
78

79
    assert template.render() == "07 Dec 2015 23:00:00"
80

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.