forked from mirrors/bookwyrm
Updates test mocks for remote search
This commit is contained in:
parent
969db13ff2
commit
c3b35760a2
2 changed files with 16 additions and 15 deletions
|
@ -86,6 +86,7 @@ def search(query, min_confidence=0.1, return_first=False):
|
||||||
raise_not_valid_url(url)
|
raise_not_valid_url(url)
|
||||||
except ConnectorException:
|
except ConnectorException:
|
||||||
# if this URL is invalid we should skip it and move on
|
# if this URL is invalid we should skip it and move on
|
||||||
|
logger.info("Request denied to blocked domain: %s", url)
|
||||||
continue
|
continue
|
||||||
items.append((url, connector))
|
items.append((url, connector))
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
""" test for app action functionality """
|
""" test for app action functionality """
|
||||||
import json
|
import json
|
||||||
import pathlib
|
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
from django.contrib.auth.models import AnonymousUser
|
from django.contrib.auth.models import AnonymousUser
|
||||||
|
@ -8,9 +7,9 @@ from django.http import JsonResponse
|
||||||
from django.template.response import TemplateResponse
|
from django.template.response import TemplateResponse
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.test.client import RequestFactory
|
from django.test.client import RequestFactory
|
||||||
import responses
|
|
||||||
|
|
||||||
from bookwyrm import models, views
|
from bookwyrm import models, views
|
||||||
|
from bookwyrm.book_search import SearchResult
|
||||||
from bookwyrm.settings import DOMAIN
|
from bookwyrm.settings import DOMAIN
|
||||||
from bookwyrm.tests.validate_html import validate_html
|
from bookwyrm.tests.validate_html import validate_html
|
||||||
|
|
||||||
|
@ -65,12 +64,11 @@ class Views(TestCase):
|
||||||
self.assertIsInstance(response, TemplateResponse)
|
self.assertIsInstance(response, TemplateResponse)
|
||||||
validate_html(response.render())
|
validate_html(response.render())
|
||||||
|
|
||||||
@responses.activate
|
|
||||||
def test_search_books(self):
|
def test_search_books(self):
|
||||||
"""searches remote connectors"""
|
"""searches remote connectors"""
|
||||||
view = views.Search.as_view()
|
view = views.Search.as_view()
|
||||||
|
|
||||||
models.Connector.objects.create(
|
connector = models.Connector.objects.create(
|
||||||
identifier="example.com",
|
identifier="example.com",
|
||||||
connector_file="openlibrary",
|
connector_file="openlibrary",
|
||||||
base_url="https://example.com",
|
base_url="https://example.com",
|
||||||
|
@ -78,26 +76,24 @@ class Views(TestCase):
|
||||||
covers_url="https://example.com/covers",
|
covers_url="https://example.com/covers",
|
||||||
search_url="https://example.com/search?q=",
|
search_url="https://example.com/search?q=",
|
||||||
)
|
)
|
||||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_search.json")
|
mock_result = SearchResult(title="Mock Book", connector=connector, key="hello")
|
||||||
search_data = json.loads(datafile.read_bytes())
|
|
||||||
responses.add(
|
|
||||||
responses.GET, "https://example.com/search?q=Test%20Book", json=search_data
|
|
||||||
)
|
|
||||||
|
|
||||||
request = self.factory.get("", {"q": "Test Book", "remote": True})
|
request = self.factory.get("", {"q": "Test Book", "remote": True})
|
||||||
request.user = self.local_user
|
request.user = self.local_user
|
||||||
with patch("bookwyrm.views.search.is_api_request") as is_api:
|
with patch("bookwyrm.views.search.is_api_request") as is_api:
|
||||||
is_api.return_value = False
|
is_api.return_value = False
|
||||||
|
with patch("bookwyrm.connectors.connector_manager.search") as remote_search:
|
||||||
|
remote_search.return_value = [
|
||||||
|
{"results": [mock_result], "connector": connector}
|
||||||
|
]
|
||||||
response = view(request)
|
response = view(request)
|
||||||
|
|
||||||
self.assertIsInstance(response, TemplateResponse)
|
self.assertIsInstance(response, TemplateResponse)
|
||||||
validate_html(response.render())
|
validate_html(response.render())
|
||||||
connector_results = response.context_data["results"]
|
connector_results = response.context_data["results"]
|
||||||
self.assertEqual(len(connector_results), 2)
|
self.assertEqual(len(connector_results), 2)
|
||||||
self.assertEqual(connector_results[0]["results"][0].title, "Test Book")
|
self.assertEqual(connector_results[0]["results"][0].title, "Test Book")
|
||||||
self.assertEqual(
|
self.assertEqual(connector_results[1]["results"][0].title, "Mock Book")
|
||||||
connector_results[1]["results"][0].title,
|
|
||||||
"This Is How You Lose the Time War",
|
|
||||||
)
|
|
||||||
|
|
||||||
# don't search remote
|
# don't search remote
|
||||||
request = self.factory.get("", {"q": "Test Book", "remote": True})
|
request = self.factory.get("", {"q": "Test Book", "remote": True})
|
||||||
|
@ -106,6 +102,10 @@ class Views(TestCase):
|
||||||
request.user = anonymous_user
|
request.user = anonymous_user
|
||||||
with patch("bookwyrm.views.search.is_api_request") as is_api:
|
with patch("bookwyrm.views.search.is_api_request") as is_api:
|
||||||
is_api.return_value = False
|
is_api.return_value = False
|
||||||
|
with patch("bookwyrm.connectors.connector_manager.search") as remote_search:
|
||||||
|
remote_search.return_value = [
|
||||||
|
{"results": [mock_result], "connector": connector}
|
||||||
|
]
|
||||||
response = view(request)
|
response = view(request)
|
||||||
self.assertIsInstance(response, TemplateResponse)
|
self.assertIsInstance(response, TemplateResponse)
|
||||||
validate_html(response.render())
|
validate_html(response.render())
|
||||||
|
|
Loading…
Reference in a new issue