|
@@ -11,7 +11,10 @@ from django.test.utils import isolate_apps
|
|
|
from django.utils import timezone
|
|
|
|
|
|
from . import PostgreSQLSimpleTestCase, PostgreSQLTestCase
|
|
|
-from .models import PostgreSQLModel, RangeLookupsModel, RangesModel
|
|
|
+from .models import (
|
|
|
+ BigAutoFieldModel, PostgreSQLModel, RangeLookupsModel, RangesModel,
|
|
|
+ SmallAutoFieldModel,
|
|
|
+)
|
|
|
|
|
|
try:
|
|
|
from psycopg2.extras import DateRange, DateTimeTZRange, NumericRange
|
|
@@ -354,6 +357,17 @@ class TestQueryingWithRanges(PostgreSQLTestCase):
|
|
|
[objs[0]],
|
|
|
)
|
|
|
|
|
|
+ def test_small_integer_field_contained_by(self):
|
|
|
+ objs = [
|
|
|
+ RangeLookupsModel.objects.create(small_integer=8),
|
|
|
+ RangeLookupsModel.objects.create(small_integer=4),
|
|
|
+ RangeLookupsModel.objects.create(small_integer=-1),
|
|
|
+ ]
|
|
|
+ self.assertSequenceEqual(
|
|
|
+ RangeLookupsModel.objects.filter(small_integer__contained_by=NumericRange(4, 6)),
|
|
|
+ [objs[1]],
|
|
|
+ )
|
|
|
+
|
|
|
def test_integer_range(self):
|
|
|
objs = [
|
|
|
RangeLookupsModel.objects.create(integer=5),
|
|
@@ -376,6 +390,19 @@ class TestQueryingWithRanges(PostgreSQLTestCase):
|
|
|
[objs[0]]
|
|
|
)
|
|
|
|
|
|
+ def test_decimal_field_contained_by(self):
|
|
|
+ objs = [
|
|
|
+ RangeLookupsModel.objects.create(decimal_field=Decimal('1.33')),
|
|
|
+ RangeLookupsModel.objects.create(decimal_field=Decimal('2.88')),
|
|
|
+ RangeLookupsModel.objects.create(decimal_field=Decimal('99.17')),
|
|
|
+ ]
|
|
|
+ self.assertSequenceEqual(
|
|
|
+ RangeLookupsModel.objects.filter(
|
|
|
+ decimal_field__contained_by=NumericRange(Decimal('1.89'), Decimal('7.91')),
|
|
|
+ ),
|
|
|
+ [objs[1]],
|
|
|
+ )
|
|
|
+
|
|
|
def test_float_range(self):
|
|
|
objs = [
|
|
|
RangeLookupsModel.objects.create(float=5),
|
|
@@ -387,6 +414,39 @@ class TestQueryingWithRanges(PostgreSQLTestCase):
|
|
|
[objs[0]]
|
|
|
)
|
|
|
|
|
|
+ def test_small_auto_field_contained_by(self):
|
|
|
+ objs = SmallAutoFieldModel.objects.bulk_create([
|
|
|
+ SmallAutoFieldModel() for i in range(1, 5)
|
|
|
+ ])
|
|
|
+ self.assertSequenceEqual(
|
|
|
+ SmallAutoFieldModel.objects.filter(
|
|
|
+ id__contained_by=NumericRange(objs[1].pk, objs[3].pk),
|
|
|
+ ),
|
|
|
+ objs[1:3],
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_auto_field_contained_by(self):
|
|
|
+ objs = RangeLookupsModel.objects.bulk_create([
|
|
|
+ RangeLookupsModel() for i in range(1, 5)
|
|
|
+ ])
|
|
|
+ self.assertSequenceEqual(
|
|
|
+ RangeLookupsModel.objects.filter(
|
|
|
+ id__contained_by=NumericRange(objs[1].pk, objs[3].pk),
|
|
|
+ ),
|
|
|
+ objs[1:3],
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_big_auto_field_contained_by(self):
|
|
|
+ objs = BigAutoFieldModel.objects.bulk_create([
|
|
|
+ BigAutoFieldModel() for i in range(1, 5)
|
|
|
+ ])
|
|
|
+ self.assertSequenceEqual(
|
|
|
+ BigAutoFieldModel.objects.filter(
|
|
|
+ id__contained_by=NumericRange(objs[1].pk, objs[3].pk),
|
|
|
+ ),
|
|
|
+ objs[1:3],
|
|
|
+ )
|
|
|
+
|
|
|
def test_f_ranges(self):
|
|
|
parent = RangesModel.objects.create(decimals=NumericRange(0, 10))
|
|
|
objs = [
|