Files
old-saburly-wagtail-web/env/lib/python3.10/site-packages/wagtail/admin/tests/test_checks.py
2024-08-27 20:33:44 +02:00

143 lines
4.4 KiB
Python

from django.core.checks import Error
from django.test import TestCase, override_settings
from django.utils.formats import reset_format_cache
from wagtail.admin.checks import datetime_format_check
from wagtail.test.utils import WagtailTestUtils
class TestDateTimeChecks(WagtailTestUtils, TestCase):
fixtures = ["test.json"]
def setUp(self):
reset_format_cache()
def test_datetime_format(self):
with override_settings(
WAGTAIL_CONTENT_LANGUAGES=[
("en", "English"),
],
LANGUAGES=[
("en", "English"),
],
WAGTAIL_DATE_FORMAT="%m/%d/%Y",
WAGTAIL_TIME_FORMAT="%H:%M",
USE_L10N=True,
):
errors = datetime_format_check(None)
self.assertEqual(errors, [])
def test_datetime_format_with_unsupported_date(self):
with override_settings(
WAGTAIL_CONTENT_LANGUAGES=[
("en", "English"),
],
LANGUAGES=[
("en", "English"),
],
WAGTAIL_DATE_FORMAT="%d.%m.%Y.",
WAGTAIL_TIME_FORMAT="%H:%M",
USE_L10N=True,
):
errors = datetime_format_check(None)
expected_errors = [
Error(
"Configuration error",
hint="'%d.%m.%Y.' must be in DATE_INPUT_FORMATS for language English (en).",
obj="WAGTAIL_DATE_FORMAT",
id="wagtailadmin.E003",
)
]
self.assertEqual(errors, expected_errors)
def test_datetime_format_with_unsupported_date_not_using_l10n(self):
"""
Test that the check doesn't raise an error when USE_L10N is False.
"""
with override_settings(
WAGTAIL_CONTENT_LANGUAGES=[
("en", "English"),
],
LANGUAGES=[
("en", "English"),
],
WAGTAIL_DATE_FORMAT="%d.%m.%Y.",
WAGTAIL_TIME_FORMAT="%H:%M",
USE_L10N=False,
):
errors = datetime_format_check(None)
self.assertEqual(errors, [])
def test_datetime_format_with_unsupported_datetime_and_time(self):
with override_settings(
WAGTAIL_CONTENT_LANGUAGES=[
("en", "English"),
],
LANGUAGES=[
("en", "English"),
],
WAGTAIL_DATETIME_FORMAT="%d.%m.%Y. %H:%M",
WAGTAIL_TIME_FORMAT="%I:%M %p",
USE_L10N=True,
):
errors = datetime_format_check(None)
expected_errors = [
Error(
"Configuration error",
hint="'%d.%m.%Y. %H:%M' must be in DATETIME_INPUT_FORMATS for language English (en).",
obj="WAGTAIL_DATETIME_FORMAT",
id="wagtailadmin.E003",
),
Error(
"Configuration error",
hint="'%I:%M %p' must be in TIME_INPUT_FORMATS for language English (en).",
obj="WAGTAIL_TIME_FORMAT",
id="wagtailadmin.E003",
),
]
self.assertEqual(errors, expected_errors)
def test_datetime_format_with_overriden_format(self):
with override_settings(
WAGTAIL_CONTENT_LANGUAGES=[
("en", "English"),
],
LANGUAGES=[
("en", "English"),
],
WAGTAIL_DATETIME_FORMAT="%d.%m.%Y. %H:%M",
FORMAT_MODULE_PATH=["wagtail.admin.tests.formats"],
USE_L10N=True,
):
errors = datetime_format_check(None)
self.assertEqual(errors, [])
def test_datetime_format_with_incorrect_overriden_format(self):
with override_settings(
WAGTAIL_CONTENT_LANGUAGES=[
("en", "English"),
],
LANGUAGES=[
("en", "English"),
],
WAGTAIL_DATETIME_FORMAT="%m.%d.%Y. %H:%M",
FORMAT_MODULE_PATH=["wagtail.admin.tests.formats"],
USE_L10N=True,
):
errors = datetime_format_check(None)
expected_errors = [
Error(
"Configuration error",
hint="'%m.%d.%Y. %H:%M' must be in DATETIME_INPUT_FORMATS for language English (en).",
obj="WAGTAIL_DATETIME_FORMAT",
id="wagtailadmin.E003",
),
]
self.assertEqual(errors, expected_errors)