summaryrefslogtreecommitdiff
path: root/tests/postgres_tests/test_search.py
diff options
context:
space:
mode:
authorTom Forbes <tom@tomforb.es>2018-08-07 22:32:29 +0100
committerTim Graham <timograham@gmail.com>2018-08-15 16:47:23 -0400
commita3df7574f934673d9c77154bb3e69917ebf85e3e (patch)
tree6406637ec10f33e5516af4083c744e8383891dae /tests/postgres_tests/test_search.py
parent7cc52250f06c2a4769badbab1d7ee01f8e3cb46a (diff)
Fixed #29644 -- Made SearchQuery.__str__() reflect negation and grouping.
Diffstat (limited to 'tests/postgres_tests/test_search.py')
-rw-r--r--tests/postgres_tests/test_search.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/tests/postgres_tests/test_search.py b/tests/postgres_tests/test_search.py
index 405de8cf0e..5ab7609cb3 100644
--- a/tests/postgres_tests/test_search.py
+++ b/tests/postgres_tests/test_search.py
@@ -9,7 +9,7 @@ from django.contrib.postgres.search import (
SearchQuery, SearchRank, SearchVector,
)
from django.db.models import F
-from django.test import modify_settings
+from django.test import SimpleTestCase, modify_settings
from . import PostgreSQLTestCase
from .models import Character, Line, Scene
@@ -292,3 +292,29 @@ class TestRankingAndWeights(GrailTestData, PostgreSQLTestCase):
rank=SearchRank(SearchVector('dialogue'), SearchQuery('brave sir robin')),
).filter(rank__gt=0.3)
self.assertSequenceEqual(searched, [self.verse0])
+
+
+class SearchQueryTests(SimpleTestCase):
+ def test_str(self):
+ tests = (
+ (~SearchQuery('a'), '~SearchQuery(a)'),
+ (
+ (SearchQuery('a') | SearchQuery('b')) & (SearchQuery('c') | SearchQuery('d')),
+ '((SearchQuery(a) || SearchQuery(b)) && (SearchQuery(c) || SearchQuery(d)))',
+ ),
+ (
+ SearchQuery('a') & (SearchQuery('b') | SearchQuery('c')),
+ '(SearchQuery(a) && (SearchQuery(b) || SearchQuery(c)))',
+ ),
+ (
+ (SearchQuery('a') | SearchQuery('b')) & SearchQuery('c'),
+ '((SearchQuery(a) || SearchQuery(b)) && SearchQuery(c))'
+ ),
+ (
+ SearchQuery('a') & (SearchQuery('b') & (SearchQuery('c') | SearchQuery('d'))),
+ '(SearchQuery(a) && (SearchQuery(b) && (SearchQuery(c) || SearchQuery(d))))',
+ ),
+ )
+ for query, expected_str in tests:
+ with self.subTest(query=query):
+ self.assertEqual(str(query), expected_str)