Fixed #31340 -- Allowed query expressions in SearchQuery.value and __search lookup.

This commit is contained in:
Baptiste Mispelon 2020-03-04 13:33:12 +01:00 committed by Mariusz Felisiak
parent 924c01ba09
commit 3baf92cf82
6 changed files with 43 additions and 4 deletions

View file

@ -10,7 +10,7 @@ from django.db.models import F
from django.test import modify_settings, skipUnlessDBFeature
from . import PostgreSQLSimpleTestCase, PostgreSQLTestCase
from .models import Character, Line, Scene
from .models import Character, Line, LineSavedSearch, Scene
try:
from django.contrib.postgres.search import (
@ -110,6 +110,18 @@ class SimpleSearchTest(GrailTestData, PostgreSQLTestCase):
)
self.assertSequenceEqual(searched, [self.verse2])
def test_search_with_F_expression(self):
# Non-matching query.
LineSavedSearch.objects.create(line=self.verse1, query='hearts')
# Matching query.
match = LineSavedSearch.objects.create(line=self.verse1, query='elbows')
for query_expression in [F('query'), SearchQuery(F('query'))]:
with self.subTest(query_expression):
searched = LineSavedSearch.objects.filter(
line__dialogue__search=query_expression,
)
self.assertSequenceEqual(searched, [match])
@modify_settings(INSTALLED_APPS={'append': 'django.contrib.postgres'})
class SearchVectorFieldTest(GrailTestData, PostgreSQLTestCase):