summaryrefslogtreecommitdiff
path: root/tests/postgres_tests/test_unaccent.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/postgres_tests/test_unaccent.py')
-rw-r--r--tests/postgres_tests/test_unaccent.py65
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