summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2020-02-27 00:34:37 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-02-27 09:20:30 +0100
commit16cacdcb3f7856df5454b648503374de150fa245 (patch)
treebea0824e3d16f8935ecf3a7bb799f189a875ee76 /tests
parent59ac25c93b228cd4ef34d4f36fbfbab3d9f6b4ad (diff)
downloaddjango-16cacdcb3f7856df5454b648503374de150fa245.tar.gz
[3.0.x] Fixed #31312 -- Properly ordered temporal subtraction params on MySQL.
Regression in 9bcbcd599abac91ea853b2fe10b784ba32df043e. Thanks rick2ricks for the report. Backport of 41ebe60728a15aa273f4d70de92f5246a89c3d4e from master
Diffstat (limited to 'tests')
-rw-r--r--tests/expressions/tests.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py
index 005e9150e7..bcd2f93177 100644
--- a/tests/expressions/tests.py
+++ b/tests/expressions/tests.py
@@ -1221,13 +1221,13 @@ class FTimeDeltaTests(TestCase):
# e0: started same day as assigned, zero duration
end = stime + delta0
- e0 = Experiment.objects.create(
+ cls.e0 = Experiment.objects.create(
name='e0', assigned=sday, start=stime, end=end,
completed=end.date(), estimated_time=delta0,
)
cls.deltas.append(delta0)
- cls.delays.append(e0.start - datetime.datetime.combine(e0.assigned, midnight))
- cls.days_long.append(e0.completed - e0.assigned)
+ cls.delays.append(cls.e0.start - datetime.datetime.combine(cls.e0.assigned, midnight))
+ cls.days_long.append(cls.e0.completed - cls.e0.assigned)
# e1: started one day after assigned, tiny duration, data
# set so that end time has no fractional seconds, which
@@ -1435,6 +1435,23 @@ class FTimeDeltaTests(TestCase):
self.assertTrue(queryset.exists())
@skipUnlessDBFeature('supports_temporal_subtraction')
+ def test_date_case_subtraction(self):
+ queryset = Experiment.objects.annotate(
+ date_case=Case(
+ When(Q(name='e0'), then=F('completed')),
+ output_field=DateField(),
+ ),
+ completed_value=Value(
+ self.e0.completed,
+ output_field=DateField(),
+ ),
+ difference=ExpressionWrapper(
+ F('date_case') - F('completed_value'), output_field=DurationField(),
+ ),
+ ).filter(difference=datetime.timedelta())
+ self.assertEqual(queryset.get(), self.e0)
+
+ @skipUnlessDBFeature('supports_temporal_subtraction')
def test_time_subtraction(self):
Time.objects.create(time=datetime.time(12, 30, 15, 2345))
queryset = Time.objects.annotate(