diff --git a/bookwyrm/tests/connectors/test_abstract_connector.py b/bookwyrm/tests/connectors/test_abstract_connector.py index 8ce4c96b..129b3f0c 100644 --- a/bookwyrm/tests/connectors/test_abstract_connector.py +++ b/bookwyrm/tests/connectors/test_abstract_connector.py @@ -119,7 +119,7 @@ class AbstractConnector(TestCase): @responses.activate def test_get_or_create_author(self): """load an author""" - self.connector.author_mappings = ( + self.connector.author_mappings = ( # pylint: disable=attribute-defined-outside-init [ # pylint: disable=attribute-defined-outside-init Mapping("id"), Mapping("name"), diff --git a/bookwyrm/tests/connectors/test_abstract_minimal_connector.py b/bookwyrm/tests/connectors/test_abstract_minimal_connector.py index 30db40cd..58907212 100644 --- a/bookwyrm/tests/connectors/test_abstract_minimal_connector.py +++ b/bookwyrm/tests/connectors/test_abstract_minimal_connector.py @@ -3,8 +3,9 @@ from django.test import TestCase import responses from bookwyrm import models +from bookwyrm.book_search import SearchResult from bookwyrm.connectors import abstract_connector -from bookwyrm.connectors.abstract_connector import Mapping, SearchResult +from bookwyrm.connectors.abstract_connector import Mapping class AbstractConnector(TestCase): diff --git a/bookwyrm/tests/connectors/test_bookwyrm_connector.py b/bookwyrm/tests/connectors/test_bookwyrm_connector.py index 46ea54a9..585080e6 100644 --- a/bookwyrm/tests/connectors/test_bookwyrm_connector.py +++ b/bookwyrm/tests/connectors/test_bookwyrm_connector.py @@ -4,8 +4,8 @@ import pathlib from django.test import TestCase from bookwyrm import models +from bookwyrm.book_search import SearchResult from bookwyrm.connectors.bookwyrm_connector import Connector -from bookwyrm.connectors.abstract_connector import SearchResult class BookWyrmConnector(TestCase): diff --git a/bookwyrm/tests/connectors/test_openlibrary_connector.py b/bookwyrm/tests/connectors/test_openlibrary_connector.py index 699b26ed..75a273d6 100644 --- a/bookwyrm/tests/connectors/test_openlibrary_connector.py +++ b/bookwyrm/tests/connectors/test_openlibrary_connector.py @@ -7,11 +7,11 @@ from django.test import TestCase import responses from bookwyrm import models +from bookwyrm.book_search import SearchResult from bookwyrm.connectors.openlibrary import Connector from bookwyrm.connectors.openlibrary import ignore_edition from bookwyrm.connectors.openlibrary import get_languages, get_description from bookwyrm.connectors.openlibrary import pick_default_edition, get_openlibrary_key -from bookwyrm.connectors.abstract_connector import SearchResult from bookwyrm.connectors.connector_manager import ConnectorException diff --git a/bookwyrm/tests/connectors/test_self_connector.py b/bookwyrm/tests/connectors/test_self_connector.py deleted file mode 100644 index a5eab879..00000000 --- a/bookwyrm/tests/connectors/test_self_connector.py +++ /dev/null @@ -1,106 +0,0 @@ -""" testing book data connectors """ -import datetime -from django.test import TestCase -from django.utils import timezone - -from bookwyrm import models -from bookwyrm.connectors.self_connector import Connector -from bookwyrm.settings import DOMAIN - - -class SelfConnector(TestCase): - """just uses local data""" - - def setUp(self): - """creating the connector""" - models.Connector.objects.create( - identifier=DOMAIN, - name="Local", - connector_file="self_connector", - base_url="https://%s" % DOMAIN, - books_url="https://%s/book" % DOMAIN, - covers_url="https://%s/images/covers" % DOMAIN, - search_url="https://%s/search?q=" % DOMAIN, - priority=1, - ) - self.connector = Connector(DOMAIN) - - def test_format_search_result(self): - """create a SearchResult""" - author = models.Author.objects.create(name="Anonymous") - edition = models.Edition.objects.create( - title="Edition of Example Work", - published_date=datetime.datetime(1980, 5, 10, tzinfo=timezone.utc), - ) - edition.authors.add(author) - result = self.connector.search("Edition of Example")[0] - self.assertEqual(result.title, "Edition of Example Work") - self.assertEqual(result.key, edition.remote_id) - self.assertEqual(result.author, "Anonymous") - self.assertEqual(result.year, 1980) - self.assertEqual(result.connector, self.connector) - - def test_search_rank(self): - """prioritize certain results""" - author = models.Author.objects.create(name="Anonymous") - edition = models.Edition.objects.create( - title="Edition of Example Work", - published_date=datetime.datetime(1980, 5, 10, tzinfo=timezone.utc), - parent_work=models.Work.objects.create(title=""), - ) - # author text is rank B - edition.authors.add(author) - - # series is rank D - models.Edition.objects.create( - title="Another Edition", - series="Anonymous", - parent_work=models.Work.objects.create(title=""), - ) - # subtitle is rank B - models.Edition.objects.create( - title="More Editions", - subtitle="The Anonymous Edition", - parent_work=models.Work.objects.create(title=""), - ) - # title is rank A - models.Edition.objects.create(title="Anonymous") - # doesn't rank in this search - models.Edition.objects.create( - title="An Edition", parent_work=models.Work.objects.create(title="") - ) - - results = self.connector.search("Anonymous") - self.assertEqual(len(results), 4) - self.assertEqual(results[0].title, "Anonymous") - self.assertEqual(results[1].title, "More Editions") - self.assertEqual(results[2].title, "Edition of Example Work") - self.assertEqual(results[3].title, "Another Edition") - - def test_search_multiple_editions(self): - """it should get rid of duplicate editions for the same work""" - work = models.Work.objects.create(title="Work Title") - edition_1 = models.Edition.objects.create( - title="Edition 1 Title", parent_work=work - ) - edition_2 = models.Edition.objects.create( - title="Edition 2 Title", - parent_work=work, - isbn_13="123456789", # this is now the defualt edition - ) - edition_3 = models.Edition.objects.create(title="Fish", parent_work=work) - - # pick the best edition - results = self.connector.search("Edition 1 Title") - self.assertEqual(len(results), 1) - self.assertEqual(results[0].key, edition_1.remote_id) - - # pick the default edition when no match is best - results = self.connector.search("Edition Title") - self.assertEqual(len(results), 1) - self.assertEqual(results[0].key, edition_2.remote_id) - - # only matches one edition, so no deduplication takes place - results = self.connector.search("Fish") - self.assertEqual(len(results), 1) - self.assertEqual(results[0].key, edition_3.remote_id)