diff --git a/wagtail/wagtaildocs/tests.py b/wagtail/wagtaildocs/tests.py index 4199d5d880..d5d36de329 100644 --- a/wagtail/wagtaildocs/tests.py +++ b/wagtail/wagtaildocs/tests.py @@ -921,6 +921,7 @@ class TestGetUsage(TestCase, WagtailTestUtils): self.assertRegex(response.content, b'(\s|\n)*') +@override_settings(_WAGTAILSEARCH_FORCE_AUTO_UPDATE=['elasticsearch']) class TestIssue613(TestCase, WagtailTestUtils): def get_elasticsearch_backend(self): from django.conf import settings diff --git a/wagtail/wagtailimages/tests/test_models.py b/wagtail/wagtailimages/tests/test_models.py index 146e69ad2f..554a9282de 100644 --- a/wagtail/wagtailimages/tests/test_models.py +++ b/wagtail/wagtailimages/tests/test_models.py @@ -366,6 +366,7 @@ class TestIssue573(TestCase): image.get_rendition('fill-800x600') +@override_settings(_WAGTAILSEARCH_FORCE_AUTO_UPDATE=['elasticsearch']) class TestIssue613(TestCase, WagtailTestUtils): def get_elasticsearch_backend(self): from django.conf import settings diff --git a/wagtail/wagtailsearch/backends/__init__.py b/wagtail/wagtailsearch/backends/__init__.py index 14d6e972b4..36e7fe8d11 100644 --- a/wagtail/wagtailsearch/backends/__init__.py +++ b/wagtail/wagtailsearch/backends/__init__.py @@ -77,10 +77,24 @@ def get_search_backend(backend='default', **kwargs): return backend_cls(params) +def _backend_requires_auto_update(backend_name, params): + if params.get('AUTO_UPDATE', True): + return True + + # _WAGTAILSEARCH_FORCE_AUTO_UPDATE is only used by Wagtail tests. It allows + # us to test AUTO_UPDATE behaviour against Elasticsearch without having to + # have AUTO_UPDATE enabed for every test. + force_auto_update = getattr(settings, '_WAGTAILSEARCH_FORCE_AUTO_UPDATE', []) + if backend_name in force_auto_update: + return True + + return False + + def get_search_backends_with_name(with_auto_update=False): if hasattr(settings, 'WAGTAILSEARCH_BACKENDS'): for backend, params in settings.WAGTAILSEARCH_BACKENDS.items(): - if with_auto_update and params.get('AUTO_UPDATE', True) is False: + if with_auto_update and _backend_requires_auto_update(backend, params) is False: continue yield backend, get_search_backend(backend)