wcs: fix cards search engine when w.c.s. is down (#48409)
This commit is contained in:
parent
154df07a3c
commit
6765819f29
|
@ -52,7 +52,7 @@ class AppConfig(django.apps.AppConfig):
|
|||
engines = {}
|
||||
for key, service in wcs_services.items():
|
||||
card_models = get_wcs_json(service, 'api/cards/@list')
|
||||
for card in card_models.get('data', []):
|
||||
for card in card_models.get('data') or []:
|
||||
matching_pages = ([p for p in pages_with_sub_slug if '<%s_id>' % card['id'] in p.sub_slug])
|
||||
if not matching_pages:
|
||||
continue
|
||||
|
|
|
@ -12,6 +12,9 @@ from django.test.utils import CaptureQueriesContext
|
|||
from django.urls import reverse
|
||||
from django.utils.http import urlencode
|
||||
|
||||
from requests.exceptions import ConnectionError
|
||||
from requests.models import Response
|
||||
|
||||
from combo.apps.search.engines import engines
|
||||
from combo.apps.search.models import SearchCell, IndexedCell
|
||||
from combo.apps.search.utils import index_site, search_site
|
||||
|
@ -684,6 +687,26 @@ def test_wcs_search_engines(settings, app):
|
|||
assert card_engine['hit_url_template'] == '/bar/{{ id }}'
|
||||
|
||||
|
||||
def test_wcs_errors(settings, app):
|
||||
settings.KNOWN_SERVICES = {'wcs': {'default': {'title': 'test', 'url': 'http://127.0.0.1:8999/'}}}
|
||||
settings.TEMPLATE_VARS['is_portal_agent'] = True
|
||||
Page.objects.create(slug='foo', title='Foo', sub_slug='(?P<foo_id>[a-z0-9]+)')
|
||||
|
||||
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
|
||||
mock_resp = Response()
|
||||
mock_resp.status_code = 500
|
||||
requests_get.return_value = mock_resp
|
||||
assert set(engines.get_engines().keys()) == set(['tracking-code', 'formdata:c21f969b', '_text'])
|
||||
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
|
||||
requests_get.side_effect = ConnectionError()
|
||||
assert set(engines.get_engines().keys()) == set(['tracking-code', 'formdata:c21f969b', '_text'])
|
||||
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
|
||||
mock_resp = Response()
|
||||
mock_resp.status_code = 404
|
||||
requests_get.return_value = mock_resp
|
||||
assert set(engines.get_engines().keys()) == set(['tracking-code', 'formdata:c21f969b', '_text'])
|
||||
|
||||
|
||||
def test_profile_search_engines(settings, app):
|
||||
settings.KNOWN_SERVICES = {}
|
||||
search_engines = engines.get_engines()
|
||||
|
|
Loading…
Reference in New Issue