diff --git a/bookwyrm/tests/connectors/test_self_connector.py b/bookwyrm/tests/connectors/test_self_connector.py index 91857def0..1cc5983c7 100644 --- a/bookwyrm/tests/connectors/test_self_connector.py +++ b/bookwyrm/tests/connectors/test_self_connector.py @@ -9,7 +9,9 @@ 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', @@ -22,58 +24,74 @@ class SelfConnector(TestCase): priority=1, ) self.connector = Connector(DOMAIN) - self.work = models.Work.objects.create( - title='Example Work', - ) - author = models.Author.objects.create(name='Anonymous') - self.edition = models.Edition.objects.create( - title='Edition of Example Work', - published_date=datetime.datetime(1980, 5, 10, tzinfo=timezone.utc), - parent_work=self.work, - ) - self.edition.authors.add(author) - models.Edition.objects.create( - title='Another Edition', - parent_work=self.work, - series='Anonymous' - ) - models.Edition.objects.create( - title='More Editions', - subtitle='The Anonymous Edition', - parent_work=self.work, - ) - - edition = models.Edition.objects.create( - title='An Edition', - parent_work=self.work - ) - edition.authors.add(models.Author.objects.create(name='Fish')) 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, self.edition.remote_id) + 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), + ) + # author text is rank C + edition.authors.add(author) + + # series is rank D + models.Edition.objects.create( + title='Another Edition', + series='Anonymous' + ) + # subtitle is rank B + models.Edition.objects.create( + title='More Editions', + subtitle='The Anonymous Edition', + ) + # title is rank A + models.Edition.objects.create(title='Anonymous') + # doesn't rank in this search + edition = models.Edition.objects.create( + title='An Edition', + ) + results = self.connector.search('Anonymous') - self.assertEqual(len(results), 2) - self.assertEqual(results[0].title, 'More Editions') - self.assertEqual(results[1].title, 'Edition of Example Work') + self.assertEqual(len(results), 3) + self.assertEqual(results[0].title, 'Anonymous') + self.assertEqual(results[1].title, 'More Editions') + self.assertEqual(results[2].title, 'Edition of Example Work') def test_search_default_filter(self): ''' it should get rid of duplicate editions for the same work ''' - self.work.default_edition = self.edition - self.work.save() + work = models.Work.objects.create(title='Work Title') + models.Edition.objects.create( + title='Edition 1 Title', parent_work=work) + edition_2 = models.Edition.objects.create( + title='Edition 2 Title', parent_work=work) + edition_3 = models.Edition.objects.create( + title='Fish', parent_work=work) + work.default_edition = edition_2 + work.save() - results = self.connector.search('Anonymous') + results = self.connector.search('Edition Title') self.assertEqual(len(results), 1) - self.assertEqual(results[0].title, 'Edition of Example Work') + self.assertEqual(results[0].key, edition_2.remote_id) results = self.connector.search('Fish') self.assertEqual(len(results), 1) - self.assertEqual(results[0].title, 'An Edition') + self.assertEqual(results[0].key, edition_3.remote_id)