diff options
| author | ahbk <alexander.holmback@gmail.com> | 2019-03-07 16:02:18 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2019-03-07 10:02:18 -0500 |
| commit | d5276398046ce4a102776a1e67dcac2884d80dfe (patch) | |
| tree | 99ec65f48c68bc545c666f9787ada81952c5ec5f /tests/db_functions/datetime | |
| parent | 38c3f7ea599d942f95a618aa25cd80395705bfa4 (diff) | |
Fixed #29754 -- Added is_dst parameter to Trunc database functions.
Diffstat (limited to 'tests/db_functions/datetime')
| -rw-r--r-- | tests/db_functions/datetime/test_extract_trunc.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/db_functions/datetime/test_extract_trunc.py b/tests/db_functions/datetime/test_extract_trunc.py index 065a06f4be..2088d09d06 100644 --- a/tests/db_functions/datetime/test_extract_trunc.py +++ b/tests/db_functions/datetime/test_extract_trunc.py @@ -1044,6 +1044,30 @@ class DateFunctionWithTimeZoneTests(DateFunctionTests): self.assertEqual(model.melb_year.year, 2016) self.assertEqual(model.pacific_year.year, 2015) + def test_trunc_ambiguous_and_invalid_times(self): + sao = pytz.timezone('America/Sao_Paulo') + utc = pytz.timezone('UTC') + start_datetime = utc.localize(datetime(2016, 10, 16, 13)) + end_datetime = utc.localize(datetime(2016, 2, 21, 1)) + self.create_model(start_datetime, end_datetime) + with timezone.override(sao): + with self.assertRaisesMessage(pytz.NonExistentTimeError, '2016-10-16 00:00:00'): + model = DTModel.objects.annotate(truncated_start=TruncDay('start_datetime')).get() + with self.assertRaisesMessage(pytz.AmbiguousTimeError, '2016-02-20 23:00:00'): + model = DTModel.objects.annotate(truncated_end=TruncHour('end_datetime')).get() + model = DTModel.objects.annotate( + truncated_start=TruncDay('start_datetime', is_dst=False), + truncated_end=TruncHour('end_datetime', is_dst=False), + ).get() + self.assertEqual(model.truncated_start.dst(), timedelta(0)) + self.assertEqual(model.truncated_end.dst(), timedelta(0)) + model = DTModel.objects.annotate( + truncated_start=TruncDay('start_datetime', is_dst=True), + truncated_end=TruncHour('end_datetime', is_dst=True), + ).get() + self.assertEqual(model.truncated_start.dst(), timedelta(0, 3600)) + self.assertEqual(model.truncated_end.dst(), timedelta(0, 3600)) + def test_trunc_func_with_timezone(self): """ If the truncated datetime transitions to a different offset (daylight |
