diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/expressions/tests.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 1e6d4c967c..180153f555 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -1427,6 +1427,16 @@ class FTimeDeltaTests(TestCase): self.assertIsNone(queryset.first().shifted) @skipUnlessDBFeature('supports_temporal_subtraction') + def test_date_subquery_subtraction(self): + subquery = Experiment.objects.filter(pk=OuterRef('pk')).values('completed') + queryset = Experiment.objects.annotate( + difference=ExpressionWrapper( + subquery - F('completed'), output_field=models.DurationField(), + ), + ).filter(difference=datetime.timedelta()) + self.assertTrue(queryset.exists()) + + @skipUnlessDBFeature('supports_temporal_subtraction') def test_time_subtraction(self): Time.objects.create(time=datetime.time(12, 30, 15, 2345)) queryset = Time.objects.annotate( @@ -1453,6 +1463,17 @@ class FTimeDeltaTests(TestCase): self.assertIsNone(queryset.first().shifted) @skipUnlessDBFeature('supports_temporal_subtraction') + def test_time_subquery_subtraction(self): + Time.objects.create(time=datetime.time(12, 30, 15, 2345)) + subquery = Time.objects.filter(pk=OuterRef('pk')).values('time') + queryset = Time.objects.annotate( + difference=ExpressionWrapper( + subquery - F('time'), output_field=models.DurationField(), + ), + ).filter(difference=datetime.timedelta()) + self.assertTrue(queryset.exists()) + + @skipUnlessDBFeature('supports_temporal_subtraction') def test_datetime_subtraction(self): under_estimate = [ e.name for e in Experiment.objects.filter(estimated_time__gt=F('end') - F('start')) @@ -1477,6 +1498,16 @@ class FTimeDeltaTests(TestCase): self.assertIsNone(queryset.first().shifted) @skipUnlessDBFeature('supports_temporal_subtraction') + def test_datetime_subquery_subtraction(self): + subquery = Experiment.objects.filter(pk=OuterRef('pk')).values('start') + queryset = Experiment.objects.annotate( + difference=ExpressionWrapper( + subquery - F('start'), output_field=models.DurationField(), + ), + ).filter(difference=datetime.timedelta()) + self.assertTrue(queryset.exists()) + + @skipUnlessDBFeature('supports_temporal_subtraction') def test_datetime_subtraction_microseconds(self): delta = datetime.timedelta(microseconds=8999999999999999) Experiment.objects.update(end=F('start') + delta) |
