diff options
| author | Mads Jensen <mje@inducks.org> | 2017-02-11 13:16:35 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-02-11 07:16:58 -0500 |
| commit | ded0632d94d3c50da29bdb0ddb061f6826b9fa48 (patch) | |
| tree | 9882c51b7414034bf57950d342ed6152f65864a0 /tests/postgres_tests | |
| parent | 9658f0d266bfded9ead5ead7a80823b4739c149f (diff) | |
[1.11.x] Refs #26610 -- Added CIText mixin and CIChar/Email/TextField.
Backport of fb5bd38e3b83c7f0d1011de80f922fc34faf740b from master
Diffstat (limited to 'tests/postgres_tests')
| -rw-r--r-- | tests/postgres_tests/fields.py | 8 | ||||
| -rw-r--r-- | tests/postgres_tests/migrations/0002_create_test_models.py | 12 | ||||
| -rw-r--r-- | tests/postgres_tests/models.py | 12 | ||||
| -rw-r--r-- | tests/postgres_tests/test_citext.py | 20 |
4 files changed, 32 insertions, 20 deletions
diff --git a/tests/postgres_tests/fields.py b/tests/postgres_tests/fields.py index 14283ccd61..233ef4888c 100644 --- a/tests/postgres_tests/fields.py +++ b/tests/postgres_tests/fields.py @@ -6,9 +6,9 @@ from django.db import models try: from django.contrib.postgres.fields import ( - ArrayField, BigIntegerRangeField, CITextField, DateRangeField, - DateTimeRangeField, FloatRangeField, HStoreField, IntegerRangeField, - JSONField, + ArrayField, BigIntegerRangeField, CICharField, CIEmailField, + CITextField, DateRangeField, DateTimeRangeField, FloatRangeField, + HStoreField, IntegerRangeField, JSONField, ) from django.contrib.postgres.search import SearchVectorField except ImportError: @@ -30,6 +30,8 @@ except ImportError: ArrayField = DummyArrayField BigIntegerRangeField = models.Field + CICharField = models.Field + CIEmailField = models.Field CITextField = models.Field DateRangeField = models.Field DateTimeRangeField = models.Field diff --git a/tests/postgres_tests/migrations/0002_create_test_models.py b/tests/postgres_tests/migrations/0002_create_test_models.py index 8f72183f5c..5a6a378358 100644 --- a/tests/postgres_tests/migrations/0002_create_test_models.py +++ b/tests/postgres_tests/migrations/0002_create_test_models.py @@ -5,9 +5,9 @@ from django.core.serializers.json import DjangoJSONEncoder from django.db import migrations, models from ..fields import ( - ArrayField, BigIntegerRangeField, CITextField, DateRangeField, - DateTimeRangeField, FloatRangeField, HStoreField, IntegerRangeField, - JSONField, SearchVectorField, + ArrayField, BigIntegerRangeField, CICharField, CIEmailField, CITextField, + DateRangeField, DateTimeRangeField, FloatRangeField, HStoreField, + IntegerRangeField, JSONField, SearchVectorField, ) from ..models import TagField @@ -139,9 +139,11 @@ class Migration(migrations.Migration): bases=None, ), migrations.CreateModel( - name='CITextTestModel', + name='CITestModel', fields=[ - ('name', CITextField(primary_key=True, max_length=255)), + ('name', CICharField(primary_key=True, max_length=255)), + ('email', CIEmailField()), + ('description', CITextField()), ], options={ 'required_db_vendor': 'postgresql', diff --git a/tests/postgres_tests/models.py b/tests/postgres_tests/models.py index 2a0d69b21a..255db91513 100644 --- a/tests/postgres_tests/models.py +++ b/tests/postgres_tests/models.py @@ -2,9 +2,9 @@ from django.core.serializers.json import DjangoJSONEncoder from django.db import models from .fields import ( - ArrayField, BigIntegerRangeField, CITextField, DateRangeField, - DateTimeRangeField, FloatRangeField, HStoreField, IntegerRangeField, - JSONField, SearchVectorField, + ArrayField, BigIntegerRangeField, CICharField, CIEmailField, CITextField, + DateRangeField, DateTimeRangeField, FloatRangeField, HStoreField, + IntegerRangeField, JSONField, SearchVectorField, ) @@ -101,8 +101,10 @@ class Character(models.Model): return self.name -class CITextTestModel(PostgreSQLModel): - name = CITextField(primary_key=True, max_length=255) +class CITestModel(PostgreSQLModel): + name = CICharField(primary_key=True, max_length=255) + email = CIEmailField() + description = CITextField() def __str__(self): return self.name diff --git a/tests/postgres_tests/test_citext.py b/tests/postgres_tests/test_citext.py index 7f86f6a205..f99f3bfa47 100644 --- a/tests/postgres_tests/test_citext.py +++ b/tests/postgres_tests/test_citext.py @@ -6,25 +6,31 @@ modifiers to enforce use of an index. from django.db import IntegrityError from . import PostgreSQLTestCase -from .models import CITextTestModel +from .models import CITestModel class CITextTestCase(PostgreSQLTestCase): @classmethod def setUpTestData(cls): - CITextTestModel.objects.create(name='JoHn') + cls.john = CITestModel.objects.create( + name='JoHn', + email='joHn@johN.com', + description='Average Joe named JoHn', + ) def test_equal_lowercase(self): """ citext removes the need for iexact as the index is case-insensitive. """ - self.assertEqual(CITextTestModel.objects.filter(name='john').count(), 1) + self.assertEqual(CITestModel.objects.filter(name=self.john.name.lower()).count(), 1) + self.assertEqual(CITestModel.objects.filter(email=self.john.email.lower()).count(), 1) + self.assertEqual(CITestModel.objects.filter(description=self.john.description.lower()).count(), 1) - def test_fail_case(self): + def test_fail_citext_primary_key(self): """ - Creating an entry for a citext-field which clashes with an existing - value isn't allowed. + Creating an entry for a citext field used as a primary key which + clashes with an existing value isn't allowed. """ with self.assertRaises(IntegrityError): - CITextTestModel.objects.create(name='John') + CITestModel.objects.create(name='John') |
