summaryrefslogtreecommitdiff
path: root/tests/postgres_tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/postgres_tests')
-rw-r--r--tests/postgres_tests/migrations/0002_create_test_models.py16
-rw-r--r--tests/postgres_tests/models.py10
-rw-r--r--tests/postgres_tests/test_array.py30
3 files changed, 51 insertions, 5 deletions
diff --git a/tests/postgres_tests/migrations/0002_create_test_models.py b/tests/postgres_tests/migrations/0002_create_test_models.py
index bdde4a9bf6..841953d351 100644
--- a/tests/postgres_tests/migrations/0002_create_test_models.py
+++ b/tests/postgres_tests/migrations/0002_create_test_models.py
@@ -27,7 +27,9 @@ class Migration(migrations.Migration):
name='DateTimeArrayModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
- ('field', django.contrib.postgres.fields.ArrayField(models.DateTimeField(), size=None)),
+ ('datetimes', django.contrib.postgres.fields.ArrayField(models.DateTimeField(), size=None)),
+ ('dates', django.contrib.postgres.fields.ArrayField(models.DateField(), size=None)),
+ ('times', django.contrib.postgres.fields.ArrayField(models.TimeField(), size=None)),
],
options={
},
@@ -44,6 +46,18 @@ class Migration(migrations.Migration):
bases=(models.Model,),
),
migrations.CreateModel(
+ name='OtherTypesArrayModel',
+ fields=[
+ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+ ('ips', django.contrib.postgres.fields.ArrayField(models.GenericIPAddressField(), size=None)),
+ ('uuids', django.contrib.postgres.fields.ArrayField(models.UUIDField(), size=None)),
+ ('decimals', django.contrib.postgres.fields.ArrayField(models.DecimalField(max_digits=5, decimal_places=2), size=None)),
+ ],
+ options={
+ },
+ bases=(models.Model,),
+ ),
+ migrations.CreateModel(
name='IntegerArrayModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
diff --git a/tests/postgres_tests/models.py b/tests/postgres_tests/models.py
index 74af39dd04..0422aba6a0 100644
--- a/tests/postgres_tests/models.py
+++ b/tests/postgres_tests/models.py
@@ -18,13 +18,21 @@ class CharArrayModel(models.Model):
class DateTimeArrayModel(models.Model):
- field = ArrayField(models.DateTimeField())
+ datetimes = ArrayField(models.DateTimeField())
+ dates = ArrayField(models.DateField())
+ times = ArrayField(models.TimeField())
class NestedIntegerArrayModel(models.Model):
field = ArrayField(ArrayField(models.IntegerField()))
+class OtherTypesArrayModel(models.Model):
+ ips = ArrayField(models.GenericIPAddressField())
+ uuids = ArrayField(models.UUIDField())
+ decimals = ArrayField(models.DecimalField(max_digits=5, decimal_places=2))
+
+
class HStoreModel(models.Model):
field = HStoreField(blank=True, null=True)
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py
index 90f4c246c6..5c300f7ea3 100644
--- a/tests/postgres_tests/test_array.py
+++ b/tests/postgres_tests/test_array.py
@@ -1,5 +1,7 @@
+import decimal
import json
import unittest
+import uuid
from django.contrib.postgres.fields import ArrayField
from django.contrib.postgres.forms import SimpleArrayField, SplitArrayField
@@ -10,7 +12,11 @@ from django import forms
from django.test import TestCase, override_settings
from django.utils import timezone
-from .models import IntegerArrayModel, NullableIntegerArrayModel, CharArrayModel, DateTimeArrayModel, NestedIntegerArrayModel, ArrayFieldSubclass
+from .models import (
+ IntegerArrayModel, NullableIntegerArrayModel, CharArrayModel,
+ DateTimeArrayModel, NestedIntegerArrayModel, OtherTypesArrayModel,
+ ArrayFieldSubclass,
+)
@unittest.skipUnless(connection.vendor == 'postgresql', 'PostgreSQL required')
@@ -29,10 +35,16 @@ class TestSaveLoad(TestCase):
self.assertEqual(instance.field, loaded.field)
def test_dates(self):
- instance = DateTimeArrayModel(field=[timezone.now()])
+ instance = DateTimeArrayModel(
+ datetimes=[timezone.now()],
+ dates=[timezone.now().date()],
+ times=[timezone.now().time()],
+ )
instance.save()
loaded = DateTimeArrayModel.objects.get()
- self.assertEqual(instance.field, loaded.field)
+ self.assertEqual(instance.datetimes, loaded.datetimes)
+ self.assertEqual(instance.dates, loaded.dates)
+ self.assertEqual(instance.times, loaded.times)
def test_tuples(self):
instance = IntegerArrayModel(field=(1,))
@@ -70,6 +82,18 @@ class TestSaveLoad(TestCase):
loaded = NestedIntegerArrayModel.objects.get()
self.assertEqual(instance.field, loaded.field)
+ def test_other_array_types(self):
+ instance = OtherTypesArrayModel(
+ ips=['192.168.0.1', '::1'],
+ uuids=[uuid.uuid4()],
+ decimals=[decimal.Decimal(1.25), 1.75],
+ )
+ instance.save()
+ loaded = OtherTypesArrayModel.objects.get()
+ self.assertEqual(instance.ips, loaded.ips)
+ self.assertEqual(instance.uuids, loaded.uuids)
+ self.assertEqual(instance.decimals, loaded.decimals)
+
@unittest.skipUnless(connection.vendor == 'postgresql', 'PostgreSQL required')
class TestQuerying(TestCase):