mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-11-22 01:21:07 +00:00
Consolidate test_posgres.py into test_book_search.py
These are tests I missed when first writing trigger tests in test_book_search.py.
This commit is contained in:
parent
cceccd1ecf
commit
2cf7ed477d
2 changed files with 58 additions and 79 deletions
|
@ -184,11 +184,67 @@ class SearchVectorTest(TestCase):
|
|||
book = self._create_book("Hear We Come", "John")
|
||||
self.assertEqual(book.search_vector, "'come':3A 'hear':1A 'john':4C")
|
||||
|
||||
book = self._create_book("there there", "the")
|
||||
self.assertEqual(book.search_vector, "'the':3C 'there':1A,2A")
|
||||
|
||||
def test_search_vector_no_author(self):
|
||||
"""book with no authors gets processed normally"""
|
||||
book = self._create_book("Book", None, series="Bunch")
|
||||
self.assertEqual(book.search_vector, "'book':1A 'bunch':2")
|
||||
|
||||
book = self._create_book("there there", None)
|
||||
self.assertEqual(book.search_vector, "'there':1A,2A")
|
||||
|
||||
# n.b.: the following originally from test_posgres.py
|
||||
|
||||
def test_search_vector_on_update(self):
|
||||
"""make sure that search_vector is being set correctly on edit"""
|
||||
book = self._create_book("The Long Goodbye", None)
|
||||
self.assertEqual(book.search_vector, "'goodby':3A 'long':2A")
|
||||
|
||||
book.title = "The Even Longer Goodbye"
|
||||
book.save(broadcast=False)
|
||||
book.refresh_from_db()
|
||||
self.assertEqual(book.search_vector, "'even':2A 'goodby':4A 'longer':3A")
|
||||
|
||||
def test_search_vector_on_author_update(self):
|
||||
"""update search when an author name changes"""
|
||||
book = self._create_book("The Long Goodbye", "The Rays")
|
||||
self.assertEqual(book.search_vector, "'goodby':3A 'long':2A 'rays':5C 'the':4C")
|
||||
|
||||
author = models.Author.objects.get(name="The Rays")
|
||||
author.name = "Jeremy"
|
||||
author.save(broadcast=False)
|
||||
book.refresh_from_db()
|
||||
self.assertEqual(book.search_vector, "'goodby':3A 'jeremy':4C 'long':2A")
|
||||
|
||||
def test_search_vector_on_author_delete(self):
|
||||
"""update search when an author is deleted"""
|
||||
book = self._create_book("The Long Goodbye", "The Rays")
|
||||
self.assertEqual(book.search_vector, "'goodby':3A 'long':2A 'rays':5C 'the':4C")
|
||||
|
||||
author = models.Author.objects.get(name="The Rays")
|
||||
book.authors.remove(author)
|
||||
book.refresh_from_db()
|
||||
self.assertEqual(book.search_vector, "'goodby':3A 'long':2A")
|
||||
|
||||
def test_search_vector_fields(self):
|
||||
"""language field irrelevant for search_vector"""
|
||||
author = models.Author.objects.create(name="The Rays")
|
||||
book = models.Edition.objects.create(
|
||||
title="The Long Goodbye",
|
||||
subtitle="wow cool",
|
||||
series="series name",
|
||||
languages=["irrelevant"],
|
||||
)
|
||||
book.authors.add(author)
|
||||
book.refresh_from_db()
|
||||
self.assertEqual(
|
||||
book.search_vector,
|
||||
# pylint: disable-next=line-too-long
|
||||
"'cool':5B 'goodby':3A 'long':2A 'name':9 'rays':7C 'seri':8 'the':6C 'wow':4B",
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def _create_book(
|
||||
title, author_name, /, *, subtitle="", series="", author_alias=None
|
||||
|
@ -212,8 +268,8 @@ class SearchVectorTest(TestCase):
|
|||
return edition
|
||||
|
||||
|
||||
class SearchVectorTriggers(TestCase):
|
||||
"""look for books as they change"""
|
||||
class SearchVectorUpdates(TestCase):
|
||||
"""look for books as they change""" # functional tests of the above
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
|
|
|
@ -1,77 +0,0 @@
|
|||
""" django configuration of postgres """
|
||||
from unittest.mock import patch
|
||||
from django.test import TestCase
|
||||
|
||||
from bookwyrm import models
|
||||
|
||||
|
||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
|
||||
class PostgresTriggers(TestCase):
|
||||
"""special migrations, fancy stuff ya know"""
|
||||
|
||||
def test_search_vector_on_create(self, _):
|
||||
"""make sure that search_vector is being set correctly on create"""
|
||||
book = models.Edition.objects.create(title="The Long Goodbye")
|
||||
book.refresh_from_db()
|
||||
self.assertEqual(book.search_vector, "'goodby':3A 'long':2A")
|
||||
|
||||
def test_search_vector_on_update(self, _):
|
||||
"""make sure that search_vector is being set correctly on edit"""
|
||||
book = models.Edition.objects.create(title="The Long Goodbye")
|
||||
book.title = "The Even Longer Goodbye"
|
||||
book.save(broadcast=False)
|
||||
book.refresh_from_db()
|
||||
self.assertEqual(book.search_vector, "'even':2A 'goodby':4A 'longer':3A")
|
||||
|
||||
def test_search_vector_fields(self, _):
|
||||
"""use multiple fields to create search vector"""
|
||||
author = models.Author.objects.create(name="The Rays")
|
||||
book = models.Edition.objects.create(
|
||||
title="The Long Goodbye",
|
||||
subtitle="wow cool",
|
||||
series="series name",
|
||||
languages=["irrelevant"],
|
||||
)
|
||||
book.authors.add(author)
|
||||
book.refresh_from_db()
|
||||
# pylint: disable=line-too-long
|
||||
self.assertEqual(
|
||||
book.search_vector,
|
||||
"'cool':5B 'goodby':3A 'long':2A 'name':9 'rays':7C 'seri':8 'the':6C 'wow':4B",
|
||||
)
|
||||
|
||||
def test_search_vector_on_author_update(self, _):
|
||||
"""update search when an author name changes"""
|
||||
author = models.Author.objects.create(name="The Rays")
|
||||
book = models.Edition.objects.create(
|
||||
title="The Long Goodbye",
|
||||
)
|
||||
book.authors.add(author)
|
||||
author.name = "Jeremy"
|
||||
author.save(broadcast=False)
|
||||
book.refresh_from_db()
|
||||
|
||||
self.assertEqual(book.search_vector, "'goodby':3A 'jeremy':4C 'long':2A")
|
||||
|
||||
def test_search_vector_on_author_delete(self, _):
|
||||
"""update search when an author name changes"""
|
||||
author = models.Author.objects.create(name="Jeremy")
|
||||
book = models.Edition.objects.create(
|
||||
title="The Long Goodbye",
|
||||
)
|
||||
|
||||
book.authors.add(author)
|
||||
book.refresh_from_db()
|
||||
self.assertEqual(book.search_vector, "'goodby':3A 'jeremy':4C 'long':2A")
|
||||
|
||||
book.authors.remove(author)
|
||||
book.refresh_from_db()
|
||||
self.assertEqual(book.search_vector, "'goodby':3A 'long':2A")
|
||||
|
||||
def test_search_vector_stop_word_fallback(self, _):
|
||||
"""use a fallback when removing stop words leads to an empty vector"""
|
||||
book = models.Edition.objects.create(
|
||||
title="there there",
|
||||
)
|
||||
book.refresh_from_db()
|
||||
self.assertEqual(book.search_vector, "'there':1A,2A")
|
Loading…
Reference in a new issue