mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2025-01-16 12:15:46 +00:00
Updates tests
This commit is contained in:
parent
d828b0ead9
commit
86060f795d
5 changed files with 29 additions and 15 deletions
|
@ -3,7 +3,8 @@ import re
|
||||||
|
|
||||||
from bookwyrm import models
|
from bookwyrm import models
|
||||||
from .abstract_connector import AbstractConnector, SearchResult, Mapping
|
from .abstract_connector import AbstractConnector, SearchResult, Mapping
|
||||||
from .connector_manager import ConnectorException, get_data
|
from .abstract_connector import get_data
|
||||||
|
from .connector_manager import ConnectorException
|
||||||
from .openlibrary_languages import languages
|
from .openlibrary_languages import languages
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,18 @@
|
||||||
|
''' interface between the app and various connectors '''
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from bookwyrm import models
|
from bookwyrm import models
|
||||||
from bookwyrm.connectors import connector_manager
|
from bookwyrm.connectors import connector_manager
|
||||||
from bookwyrm.connectors.bookwyrm_connector import Connector as BookWyrmConnector
|
from bookwyrm.connectors.bookwyrm_connector \
|
||||||
from bookwyrm.connectors.self_connector import Connector as SelfConnector
|
import Connector as BookWyrmConnector
|
||||||
|
from bookwyrm.connectors.self_connector \
|
||||||
|
import Connector as SelfConnector
|
||||||
|
|
||||||
|
|
||||||
class ConnectorManager(TestCase):
|
class ConnectorManager(TestCase):
|
||||||
|
''' interface between the app and various connectors '''
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
''' we'll need some books and a connector info entry '''
|
||||||
self.work = models.Work.objects.create(
|
self.work = models.Work.objects.create(
|
||||||
title='Example Work'
|
title='Example Work'
|
||||||
)
|
)
|
||||||
|
@ -29,17 +34,9 @@ class ConnectorManager(TestCase):
|
||||||
covers_url='http://test.com/',
|
covers_url='http://test.com/',
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_get_edition(self):
|
|
||||||
edition = connector_manager.get_edition(self.edition.id)
|
|
||||||
self.assertEqual(edition, self.edition)
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_edition_work(self):
|
|
||||||
edition = connector_manager.get_edition(self.work.id)
|
|
||||||
self.assertEqual(edition, self.edition)
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_or_create_connector(self):
|
def test_get_or_create_connector(self):
|
||||||
|
''' loads a connector if the data source is known or creates one '''
|
||||||
remote_id = 'https://example.com/object/1'
|
remote_id = 'https://example.com/object/1'
|
||||||
connector = connector_manager.get_or_create_connector(remote_id)
|
connector = connector_manager.get_or_create_connector(remote_id)
|
||||||
self.assertIsInstance(connector, BookWyrmConnector)
|
self.assertIsInstance(connector, BookWyrmConnector)
|
||||||
|
@ -50,6 +47,7 @@ class ConnectorManager(TestCase):
|
||||||
self.assertEqual(connector.identifier, same_connector.identifier)
|
self.assertEqual(connector.identifier, same_connector.identifier)
|
||||||
|
|
||||||
def test_get_connectors(self):
|
def test_get_connectors(self):
|
||||||
|
''' load all connectors '''
|
||||||
remote_id = 'https://example.com/object/1'
|
remote_id = 'https://example.com/object/1'
|
||||||
connector_manager.get_or_create_connector(remote_id)
|
connector_manager.get_or_create_connector(remote_id)
|
||||||
connectors = list(connector_manager.get_connectors())
|
connectors = list(connector_manager.get_connectors())
|
||||||
|
@ -58,6 +56,7 @@ class ConnectorManager(TestCase):
|
||||||
self.assertIsInstance(connectors[1], BookWyrmConnector)
|
self.assertIsInstance(connectors[1], BookWyrmConnector)
|
||||||
|
|
||||||
def test_search(self):
|
def test_search(self):
|
||||||
|
''' search all connectors '''
|
||||||
results = connector_manager.search('Example')
|
results = connector_manager.search('Example')
|
||||||
self.assertEqual(len(results), 1)
|
self.assertEqual(len(results), 1)
|
||||||
self.assertIsInstance(results[0]['connector'], SelfConnector)
|
self.assertIsInstance(results[0]['connector'], SelfConnector)
|
||||||
|
@ -65,17 +64,20 @@ class ConnectorManager(TestCase):
|
||||||
self.assertEqual(results[0]['results'][0].title, 'Example Edition')
|
self.assertEqual(results[0]['results'][0].title, 'Example Edition')
|
||||||
|
|
||||||
def test_local_search(self):
|
def test_local_search(self):
|
||||||
|
''' search only the local database '''
|
||||||
results = connector_manager.local_search('Example')
|
results = connector_manager.local_search('Example')
|
||||||
self.assertEqual(len(results), 1)
|
self.assertEqual(len(results), 1)
|
||||||
self.assertEqual(results[0].title, 'Example Edition')
|
self.assertEqual(results[0].title, 'Example Edition')
|
||||||
|
|
||||||
def test_first_search_result(self):
|
def test_first_search_result(self):
|
||||||
|
''' only get one search result '''
|
||||||
result = connector_manager.first_search_result('Example')
|
result = connector_manager.first_search_result('Example')
|
||||||
self.assertEqual(result.title, 'Example Edition')
|
self.assertEqual(result.title, 'Example Edition')
|
||||||
no_result = connector_manager.first_search_result('dkjfhg')
|
no_result = connector_manager.first_search_result('dkjfhg')
|
||||||
self.assertIsNone(no_result)
|
self.assertIsNone(no_result)
|
||||||
|
|
||||||
def test_load_connector(self):
|
def test_load_connector(self):
|
||||||
|
''' load a connector object from the database entry '''
|
||||||
connector = connector_manager.load_connector(self.connector)
|
connector = connector_manager.load_connector(self.connector)
|
||||||
self.assertIsInstance(connector, SelfConnector)
|
self.assertIsInstance(connector, SelfConnector)
|
||||||
self.assertEqual(connector.identifier, 'test_connector')
|
self.assertEqual(connector.identifier, 'test_connector')
|
||||||
|
|
|
@ -164,7 +164,9 @@ class ImportJob(TestCase):
|
||||||
json={'name': 'test author'},
|
json={'name': 'test author'},
|
||||||
status=200)
|
status=200)
|
||||||
|
|
||||||
with patch('bookwyrm.connector_manager.first_search_result') as search:
|
with patch(
|
||||||
|
'bookwyrm.connectors.connector_manager.first_search_result'
|
||||||
|
) as search:
|
||||||
search.return_value = result
|
search.return_value = result
|
||||||
book = self.item_1.get_book_from_isbn()
|
book = self.item_1.get_book_from_isbn()
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,14 @@ class Views(TestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_edition(self):
|
||||||
|
''' given an edition or a work, returns an edition '''
|
||||||
|
self.assertEqual(
|
||||||
|
views.get_edition(self.book.id), self.book)
|
||||||
|
self.assertEqual(
|
||||||
|
views.get_edition(self.work.id), self.book)
|
||||||
|
|
||||||
|
|
||||||
def test_get_user_from_username(self):
|
def test_get_user_from_username(self):
|
||||||
''' works for either localname or username '''
|
''' works for either localname or username '''
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
@ -193,7 +201,8 @@ class Views(TestCase):
|
||||||
request = self.factory.get('', {'q': 'Test Book'})
|
request = self.factory.get('', {'q': 'Test Book'})
|
||||||
with patch('bookwyrm.views.is_api_request') as is_api:
|
with patch('bookwyrm.views.is_api_request') as is_api:
|
||||||
is_api.return_value = False
|
is_api.return_value = False
|
||||||
with patch('bookwyrm.connectors.connector_manager.search') as manager:
|
with patch(
|
||||||
|
'bookwyrm.connectors.connector_manager.search') as manager:
|
||||||
manager.return_value = [search_result]
|
manager.return_value = [search_result]
|
||||||
response = views.search(request)
|
response = views.search(request)
|
||||||
self.assertIsInstance(response, TemplateResponse)
|
self.assertIsInstance(response, TemplateResponse)
|
||||||
|
|
|
@ -26,7 +26,7 @@ def get_edition(book_id):
|
||||||
''' look up a book in the db and return an edition '''
|
''' look up a book in the db and return an edition '''
|
||||||
book = models.Book.objects.select_subclasses().get(id=book_id)
|
book = models.Book.objects.select_subclasses().get(id=book_id)
|
||||||
if isinstance(book, models.Work):
|
if isinstance(book, models.Work):
|
||||||
book = book.default_edition
|
book = book.get_default_edition()
|
||||||
return book
|
return book
|
||||||
|
|
||||||
def get_user_from_username(username):
|
def get_user_from_username(username):
|
||||||
|
|
Loading…
Reference in a new issue