summaryrefslogtreecommitdiff
path: root/tests/postgres_tests
diff options
context:
space:
mode:
authorJames Turk <dev@jamesturk.net>2019-12-13 15:10:33 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-12-16 14:59:59 +0100
commitff00a053478fee06bdfb4206c6d4e079e98640ff (patch)
treef9fd5de71875e2b19a3ff69820ead99d4ed97e83 /tests/postgres_tests
parent972d93a95ec8b37fab84400417070b7439414967 (diff)
Fixed #31088 -- Added support for websearch searching in SearchQuery.
Diffstat (limited to 'tests/postgres_tests')
-rw-r--r--tests/postgres_tests/test_search.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/postgres_tests/test_search.py b/tests/postgres_tests/test_search.py
index f5111ce8d3..07b1f9e9b4 100644
--- a/tests/postgres_tests/test_search.py
+++ b/tests/postgres_tests/test_search.py
@@ -202,6 +202,45 @@ class MultipleFieldsTest(GrailTestData, PostgreSQLTestCase):
)
self.assertSequenceEqual(searched, [self.french])
+ @skipUnlessDBFeature('has_websearch_to_tsquery')
+ def test_web_search(self):
+ line_qs = Line.objects.annotate(search=SearchVector('dialogue'))
+ searched = line_qs.filter(
+ search=SearchQuery(
+ '"burned body" "split kneecaps"',
+ search_type='websearch',
+ ),
+ )
+ self.assertSequenceEqual(searched, [])
+ searched = line_qs.filter(
+ search=SearchQuery(
+ '"body burned" "kneecaps split" -"nostrils"',
+ search_type='websearch',
+ ),
+ )
+ self.assertSequenceEqual(searched, [self.verse1])
+ searched = line_qs.filter(
+ search=SearchQuery(
+ '"Sir Robin" ("kneecaps" OR "Camelot")',
+ search_type='websearch',
+ ),
+ )
+ self.assertSequenceEqual(searched, [self.verse0, self.verse1])
+
+ @skipUnlessDBFeature('has_websearch_to_tsquery')
+ def test_web_search_with_config(self):
+ line_qs = Line.objects.annotate(
+ search=SearchVector('scene__setting', 'dialogue', config='french'),
+ )
+ searched = line_qs.filter(
+ search=SearchQuery('cadeau -beau', search_type='websearch', config='french'),
+ )
+ self.assertSequenceEqual(searched, [])
+ searched = line_qs.filter(
+ search=SearchQuery('beau cadeau', search_type='websearch', config='french'),
+ )
+ self.assertSequenceEqual(searched, [self.french])
+
def test_bad_search_type(self):
with self.assertRaisesMessage(ValueError, "Unknown search_type argument 'foo'."):
SearchQuery('kneecaps', search_type='foo')