diff options
| author | Nick Pope <nick@nickpope.me.uk> | 2021-05-10 14:39:50 +0100 |
|---|---|---|
| committer | Carlton Gibson <carlton.gibson@noumenal.es> | 2021-05-12 14:42:17 +0200 |
| commit | 46346f8ea08020d503b25472a26b949a5ce980a6 (patch) | |
| tree | 2ea5991cc8dc896fd2858ad1df51ae34655053ff /tests | |
| parent | 44accb066a51d15f27e38f203c73830eddea16df (diff) | |
Refs #32738 -- Added sanitize_strftime_format() to replace datetime_safe.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/forms_tests/widget_tests/test_selectdatewidget.py | 3 | ||||
| -rw-r--r-- | tests/i18n/tests.py | 48 |
2 files changed, 49 insertions, 2 deletions
diff --git a/tests/forms_tests/widget_tests/test_selectdatewidget.py b/tests/forms_tests/widget_tests/test_selectdatewidget.py index 00cfbae758..661268a08d 100644 --- a/tests/forms_tests/widget_tests/test_selectdatewidget.py +++ b/tests/forms_tests/widget_tests/test_selectdatewidget.py @@ -477,7 +477,8 @@ class SelectDateWidgetTest(WidgetTest): w.value_from_datadict({'date_year': '1899', 'date_month': '8', 'date_day': '13'}, {}, 'date'), '13-08-1899', ) - # And years before 1000 (demonstrating the need for datetime_safe). + # And years before 1000 (demonstrating the need for + # sanitize_strftime_format). w = SelectDateWidget(years=('0001',)) self.assertEqual( w.value_from_datadict({'date_year': '0001', 'date_month': '8', 'date_day': '13'}, {}, 'date'), diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py index 7d81f2a07d..7705df738c 100644 --- a/tests/i18n/tests.py +++ b/tests/i18n/tests.py @@ -24,7 +24,8 @@ from django.test import ( from django.utils import translation from django.utils.formats import ( date_format, get_format, get_format_modules, iter_format_modules, localize, - localize_input, reset_format_cache, sanitize_separators, time_format, + localize_input, reset_format_cache, sanitize_separators, + sanitize_strftime_format, time_format, ) from django.utils.numberformat import format as nformat from django.utils.safestring import SafeString, mark_safe @@ -1074,6 +1075,51 @@ class FormattingTests(SimpleTestCase): with self.subTest(value=value): self.assertEqual(localize_input(value), expected) + def test_sanitize_strftime_format(self): + for year in (1, 99, 999, 1000): + dt = datetime.date(year, 1, 1) + for fmt, expected in [ + ('%C', '%02d' % (year // 100)), + ('%F', '%04d-01-01' % year), + ('%G', '%04d' % year), + ('%Y', '%04d' % year), + ]: + with self.subTest(year=year, fmt=fmt): + fmt = sanitize_strftime_format(fmt) + self.assertEqual(dt.strftime(fmt), expected) + + def test_sanitize_strftime_format_with_escaped_percent(self): + dt = datetime.date(1, 1, 1) + for fmt, expected in [ + ('%%C', '%C'), + ('%%F', '%F'), + ('%%G', '%G'), + ('%%Y', '%Y'), + ('%%%%C', '%%C'), + ('%%%%F', '%%F'), + ('%%%%G', '%%G'), + ('%%%%Y', '%%Y'), + ]: + with self.subTest(fmt=fmt): + fmt = sanitize_strftime_format(fmt) + self.assertEqual(dt.strftime(fmt), expected) + + for year in (1, 99, 999, 1000): + dt = datetime.date(year, 1, 1) + for fmt, expected in [ + ('%%%C', '%%%02d' % (year // 100)), + ('%%%F', '%%%04d-01-01' % year), + ('%%%G', '%%%04d' % year), + ('%%%Y', '%%%04d' % year), + ('%%%%%C', '%%%%%02d' % (year // 100)), + ('%%%%%F', '%%%%%04d-01-01' % year), + ('%%%%%G', '%%%%%04d' % year), + ('%%%%%Y', '%%%%%04d' % year), + ]: + with self.subTest(year=year, fmt=fmt): + fmt = sanitize_strftime_format(fmt) + self.assertEqual(dt.strftime(fmt), expected) + def test_sanitize_separators(self): """ Tests django.utils.formats.sanitize_separators. |
