tests(search/elastic): Use swappable class names in tests

This commit is contained in:
Karl Hobley 2015-12-07 13:39:55 +00:00 committed by Matt Westcott
parent 3bcb722a5f
commit 9751e00c92

View file

@ -13,13 +13,7 @@ from django.test import TestCase
from django.db.models import Q
from wagtail.wagtailsearch.backends import get_search_backend
from wagtail.wagtailsearch.backends.elasticsearch import (
ElasticSearch,
ElasticSearchMapping,
ElasticSearchResults,
ElasticSearchQuery,
ElasticSearchAtomicIndexRebuilder,
)
from wagtail.wagtailsearch.backends.elasticsearch import ElasticSearch
from wagtail.tests.search import models
from .test_backends import BackendTests
@ -239,9 +233,11 @@ class TestElasticSearchQuery(TestCase):
json.dumps(a, sort_keys=True, default=default), json.dumps(b, sort_keys=True, default=default)
)
query_class = ElasticSearch.query_class
def test_simple(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.all(), "Hello")
query = self.query_class(models.SearchTest.objects.all(), "Hello")
# Check it
expected_result = {'filtered': {
@ -252,7 +248,7 @@ class TestElasticSearchQuery(TestCase):
def test_none_query_string(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.all(), None)
query = self.query_class(models.SearchTest.objects.all(), None)
# Check it
expected_result = {'filtered': {
@ -263,7 +259,7 @@ class TestElasticSearchQuery(TestCase):
def test_and_operator(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.all(), "Hello", operator='and')
query = self.query_class(models.SearchTest.objects.all(), "Hello", operator='and')
# Check it
expected_result = {'filtered': {
@ -274,7 +270,7 @@ class TestElasticSearchQuery(TestCase):
def test_filter(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.filter(title="Test"), "Hello")
query = self.query_class(models.SearchTest.objects.filter(title="Test"), "Hello")
# Check it
expected_result = {'filtered': {'filter': {'and': [
@ -285,7 +281,7 @@ class TestElasticSearchQuery(TestCase):
def test_and_filter(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.filter(title="Test", live=True), "Hello")
query = self.query_class(models.SearchTest.objects.filter(title="Test", live=True), "Hello")
# Check it
expected_result = {'filtered': {'filter': {'and': [
@ -302,7 +298,7 @@ class TestElasticSearchQuery(TestCase):
def test_or_filter(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.filter(Q(title="Test") | Q(live=True)), "Hello")
query = self.query_class(models.SearchTest.objects.filter(Q(title="Test") | Q(live=True)), "Hello")
# Make sure field filters are sorted (as they can be in any order which may cause false positives)
query = query.get_query()
@ -318,7 +314,7 @@ class TestElasticSearchQuery(TestCase):
def test_negated_filter(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.exclude(live=True), "Hello")
query = self.query_class(models.SearchTest.objects.exclude(live=True), "Hello")
# Check it
expected_result = {'filtered': {'filter': {'and': [
@ -329,7 +325,7 @@ class TestElasticSearchQuery(TestCase):
def test_fields(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.all(), "Hello", fields=['title'])
query = self.query_class(models.SearchTest.objects.all(), "Hello", fields=['title'])
# Check it
expected_result = {'filtered': {
@ -340,7 +336,7 @@ class TestElasticSearchQuery(TestCase):
def test_fields_with_and_operator(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.all(), "Hello", fields=['title'], operator='and')
query = self.query_class(models.SearchTest.objects.all(), "Hello", fields=['title'], operator='and')
# Check it
expected_result = {'filtered': {
@ -351,7 +347,7 @@ class TestElasticSearchQuery(TestCase):
def test_multiple_fields(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.all(), "Hello", fields=['title', 'content'])
query = self.query_class(models.SearchTest.objects.all(), "Hello", fields=['title', 'content'])
# Check it
expected_result = {'filtered': {
@ -362,7 +358,7 @@ class TestElasticSearchQuery(TestCase):
def test_multiple_fields_with_and_operator(self):
# Create a query
query = ElasticSearchQuery(
query = self.query_class(
models.SearchTest.objects.all(), "Hello", fields=['title', 'content'], operator='and'
)
@ -375,7 +371,7 @@ class TestElasticSearchQuery(TestCase):
def test_exact_lookup(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.filter(title__exact="Test"), "Hello")
query = self.query_class(models.SearchTest.objects.filter(title__exact="Test"), "Hello")
# Check it
expected_result = {'filtered': {'filter': {'and': [
@ -386,7 +382,7 @@ class TestElasticSearchQuery(TestCase):
def test_none_lookup(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.filter(title=None), "Hello")
query = self.query_class(models.SearchTest.objects.filter(title=None), "Hello")
# Check it
expected_result = {'filtered': {'filter': {'and': [
@ -397,7 +393,7 @@ class TestElasticSearchQuery(TestCase):
def test_isnull_true_lookup(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.filter(title__isnull=True), "Hello")
query = self.query_class(models.SearchTest.objects.filter(title__isnull=True), "Hello")
# Check it
expected_result = {'filtered': {'filter': {'and': [
@ -408,7 +404,7 @@ class TestElasticSearchQuery(TestCase):
def test_isnull_false_lookup(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.filter(title__isnull=False), "Hello")
query = self.query_class(models.SearchTest.objects.filter(title__isnull=False), "Hello")
# Check it
expected_result = {'filtered': {'filter': {'and': [
@ -419,7 +415,7 @@ class TestElasticSearchQuery(TestCase):
def test_startswith_lookup(self):
# Create a query
query = ElasticSearchQuery(models.SearchTest.objects.filter(title__startswith="Test"), "Hello")
query = self.query_class(models.SearchTest.objects.filter(title__startswith="Test"), "Hello")
# Check it
expected_result = {'filtered': {'filter': {'and': [
@ -432,7 +428,7 @@ class TestElasticSearchQuery(TestCase):
# This also tests conversion of python dates to strings
# Create a query
query = ElasticSearchQuery(
query = self.query_class(
models.SearchTest.objects.filter(published_date__gt=datetime.datetime(2014, 4, 29)), "Hello"
)
@ -445,7 +441,7 @@ class TestElasticSearchQuery(TestCase):
def test_lt_lookup(self):
# Create a query
query = ElasticSearchQuery(
query = self.query_class(
models.SearchTest.objects.filter(published_date__lt=datetime.datetime(2014, 4, 29)), "Hello"
)
@ -458,7 +454,7 @@ class TestElasticSearchQuery(TestCase):
def test_gte_lookup(self):
# Create a query
query = ElasticSearchQuery(
query = self.query_class(
models.SearchTest.objects.filter(published_date__gte=datetime.datetime(2014, 4, 29)), "Hello"
)
@ -471,7 +467,7 @@ class TestElasticSearchQuery(TestCase):
def test_lte_lookup(self):
# Create a query
query = ElasticSearchQuery(
query = self.query_class(
models.SearchTest.objects.filter(published_date__lte=datetime.datetime(2014, 4, 29)), "Hello"
)
@ -487,7 +483,7 @@ class TestElasticSearchQuery(TestCase):
end_date = datetime.datetime(2014, 8, 19)
# Create a query
query = ElasticSearchQuery(
query = self.query_class(
models.SearchTest.objects.filter(published_date__range=(start_date, end_date)), "Hello"
)
@ -500,7 +496,7 @@ class TestElasticSearchQuery(TestCase):
def test_custom_ordering(self):
# Create a query
query = ElasticSearchQuery(
query = self.query_class(
models.SearchTest.objects.order_by('published_date'), "Hello", order_by_relevance=False
)
@ -510,7 +506,7 @@ class TestElasticSearchQuery(TestCase):
def test_custom_ordering_reversed(self):
# Create a query
query = ElasticSearchQuery(
query = self.query_class(
models.SearchTest.objects.order_by('-published_date'), "Hello", order_by_relevance=False
)
@ -520,7 +516,7 @@ class TestElasticSearchQuery(TestCase):
def test_custom_ordering_multiple(self):
# Create a query
query = ElasticSearchQuery(
query = self.query_class(
models.SearchTest.objects.order_by('published_date', 'live'), "Hello", order_by_relevance=False
)
@ -548,7 +544,7 @@ class TestElasticSearchResults(TestCase):
query.queryset = models.SearchTest.objects.all()
query.get_query.return_value = 'QUERY'
query.get_sort.return_value = None
return ElasticSearchResults(backend, query)
return backend.results_class(backend, query)
def construct_search_response(self, results):
return {
@ -716,7 +712,7 @@ class TestElasticSearchMapping(TestCase):
def setUp(self):
# Create ES mapping
self.es_mapping = ElasticSearchMapping(models.SearchTest)
self.es_mapping = ElasticSearch.mapping_class(models.SearchTest)
# Create ES document
self.obj = models.SearchTest(title="Hello")
@ -798,7 +794,7 @@ class TestElasticSearchMappingInheritance(TestCase):
def setUp(self):
# Create ES mapping
self.es_mapping = ElasticSearchMapping(models.SearchTestChild)
self.es_mapping = ElasticSearch.mapping_class(models.SearchTestChild)
# Create ES document
self.obj = models.SearchTestChild(title="Hello", subtitle="World", page_id=1)
@ -1008,7 +1004,7 @@ class TestRebuilder(TestCase):
self.rebuilder.add_model(models.SearchTest)
# Check the mapping went into Elasticsearch correctly
mapping = ElasticSearchMapping(models.SearchTest)
mapping = ElasticSearch.mapping_class(models.SearchTest)
response = self.es.indices.get_mapping(self.backend.es_index, mapping.get_document_type())
# Make some minor tweaks to the mapping so it matches what is in ES
@ -1030,7 +1026,7 @@ class TestRebuilder(TestCase):
class TestAtomicRebuilder(TestCase):
def setUp(self):
self.backend = get_search_backend('elasticsearch')
self.backend.rebuilder_class = ElasticSearchAtomicIndexRebuilder
self.backend.rebuilder_class = self.backend.atomic_rebuilder_class
self.es = self.backend.es
self.rebuilder = self.backend.get_rebuilder()