cookiecutter
79 строк · 2.5 Кб
1"""Tests for the TimeExtension Jinja2 extension."""
2
3import freezegun4import pytest5from jinja2 import Environment, exceptions6
7
8@pytest.fixture9def environment():10"""Fixture. Add tested extension to environment."""11return Environment(extensions=['cookiecutter.extensions.TimeExtension']) # noqa: S70112
13
14@pytest.fixture(autouse=True)15def freeze():16"""Fixture. Freeze time for all tests."""17freezer = freezegun.freeze_time("2015-12-09 23:33:01")18freezer.start()19yield20freezer.stop()21
22
23def test_tz_is_required(environment) -> None:24"""Verify template parsing fails without a timezone."""25with pytest.raises(exceptions.TemplateSyntaxError):26environment.from_string('{% now %}')27
28
29def test_utc_default_datetime_format(environment) -> None:30"""Verify default datetime format can be parsed."""31template = environment.from_string("{% now 'utc' %}")32
33assert template.render() == "2015-12-09"34
35
36@pytest.mark.parametrize("valid_tz", ['utc', 'local', 'Europe/Berlin'])37def test_accept_valid_timezones(environment, valid_tz) -> None:38"""Verify that valid timezones are accepted."""39template = environment.from_string(f"{{% now '{valid_tz}', '%Y-%m' %}}")40
41assert template.render() == '2015-12'42
43
44def test_environment_datetime_format(environment) -> None:45"""Verify datetime format can be parsed from environment."""46environment.datetime_format = '%a, %d %b %Y %H:%M:%S'47
48template = environment.from_string("{% now 'utc' %}")49
50assert template.render() == "Wed, 09 Dec 2015 23:33:01"51
52
53def test_add_time(environment) -> None:54"""Verify that added time offset can be parsed."""55environment.datetime_format = '%a, %d %b %Y %H:%M:%S'56
57template = environment.from_string("{% now 'utc' + 'hours=2,seconds=30' %}")58
59assert template.render() == "Thu, 10 Dec 2015 01:33:31"60
61
62def test_substract_time(environment) -> None:63"""Verify that substracted time offset can be parsed."""64environment.datetime_format = '%a, %d %b %Y %H:%M:%S'65
66template = environment.from_string("{% now 'utc' - 'minutes=11' %}")67
68assert template.render() == "Wed, 09 Dec 2015 23:22:01"69
70
71def test_offset_with_format(environment) -> None:72"""Verify that offset works together with datetime format."""73environment.datetime_format = '%d %b %Y %H:%M:%S'74
75template = environment.from_string(76"{% now 'utc' - 'days=2,minutes=33,seconds=1', '%d %b %Y %H:%M:%S' %}"77)78
79assert template.render() == "07 Dec 2015 23:00:00"80