diff options
Diffstat (limited to 'tests/postgres_tests/test_unaccent.py')
| -rw-r--r-- | tests/postgres_tests/test_unaccent.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/postgres_tests/test_unaccent.py b/tests/postgres_tests/test_unaccent.py new file mode 100644 index 0000000000..47ccbda519 --- /dev/null +++ b/tests/postgres_tests/test_unaccent.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +import unittest + +from django.db import connection +from django.test import TestCase, modify_settings + +from .models import CharFieldModel, TextFieldModel + + +@unittest.skipUnless(connection.vendor == 'postgresql', 'PostgreSQL required') +@modify_settings(INSTALLED_APPS={'append': 'django.contrib.postgres'}) +class UnaccentTest(TestCase): + + Model = CharFieldModel + + def setUp(self): + self.Model.objects.bulk_create([ + self.Model(field="àéÖ"), + self.Model(field="aeO"), + self.Model(field="aeo"), + ]) + + def test_unaccent(self): + self.assertQuerysetEqual( + self.Model.objects.filter(field__unaccent="aeO"), + ["àéÖ", "aeO"], + transform=lambda instance: instance.field, + ordered=False + ) + + def test_unaccent_chained(self): + """ + Check that unaccent can be used chained with a lookup (which should be + the case since unaccent implements the Transform API) + """ + self.assertQuerysetEqual( + self.Model.objects.filter(field__unaccent__iexact="aeO"), + ["àéÖ", "aeO", "aeo"], + transform=lambda instance: instance.field, + ordered=False + ) + self.assertQuerysetEqual( + self.Model.objects.filter(field__unaccent__endswith="éÖ"), + ["àéÖ", "aeO"], + transform=lambda instance: instance.field, + ordered=False + ) + + def test_unaccent_accentuated_needle(self): + self.assertQuerysetEqual( + self.Model.objects.filter(field__unaccent="aéÖ"), + ["àéÖ", "aeO"], + transform=lambda instance: instance.field, + ordered=False + ) + + +class UnaccentTextFieldTest(UnaccentTest): + """ + TextField should have the exact same behavior as CharField + regarding unaccent lookups. + """ + Model = TextFieldModel |
