New version of black, new whitespace
This commit is contained in:
parent
ef83eb33b0
commit
3ade2d3bb1
152 changed files with 1289 additions and 1289 deletions
|
@ -21,10 +21,10 @@ from bookwyrm import models
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
class BaseActivity(TestCase):
|
||||
""" the super class for model-linked activitypub dataclasses """
|
||||
"""the super class for model-linked activitypub dataclasses"""
|
||||
|
||||
def setUp(self):
|
||||
""" we're probably going to re-use this so why copy/paste """
|
||||
"""we're probably going to re-use this so why copy/paste"""
|
||||
self.user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -45,28 +45,28 @@ class BaseActivity(TestCase):
|
|||
self.image_data = output.getvalue()
|
||||
|
||||
def test_init(self, _):
|
||||
""" simple successfuly init """
|
||||
"""simple successfuly init"""
|
||||
instance = ActivityObject(id="a", type="b")
|
||||
self.assertTrue(hasattr(instance, "id"))
|
||||
self.assertTrue(hasattr(instance, "type"))
|
||||
|
||||
def test_init_missing(self, _):
|
||||
""" init with missing required params """
|
||||
"""init with missing required params"""
|
||||
with self.assertRaises(ActivitySerializerError):
|
||||
ActivityObject()
|
||||
|
||||
def test_init_extra_fields(self, _):
|
||||
""" init ignoring additional fields """
|
||||
"""init ignoring additional fields"""
|
||||
instance = ActivityObject(id="a", type="b", fish="c")
|
||||
self.assertTrue(hasattr(instance, "id"))
|
||||
self.assertTrue(hasattr(instance, "type"))
|
||||
|
||||
def test_init_default_field(self, _):
|
||||
""" replace an existing required field with a default field """
|
||||
"""replace an existing required field with a default field"""
|
||||
|
||||
@dataclass(init=False)
|
||||
class TestClass(ActivityObject):
|
||||
""" test class with default field """
|
||||
"""test class with default field"""
|
||||
|
||||
type: str = "TestObject"
|
||||
|
||||
|
@ -75,7 +75,7 @@ class BaseActivity(TestCase):
|
|||
self.assertEqual(instance.type, "TestObject")
|
||||
|
||||
def test_serialize(self, _):
|
||||
""" simple function for converting dataclass to dict """
|
||||
"""simple function for converting dataclass to dict"""
|
||||
instance = ActivityObject(id="a", type="b")
|
||||
serialized = instance.serialize()
|
||||
self.assertIsInstance(serialized, dict)
|
||||
|
@ -84,7 +84,7 @@ class BaseActivity(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_resolve_remote_id(self, _):
|
||||
""" look up or load remote data """
|
||||
"""look up or load remote data"""
|
||||
# existing item
|
||||
result = resolve_remote_id("http://example.com/a/b", model=models.User)
|
||||
self.assertEqual(result, self.user)
|
||||
|
@ -106,14 +106,14 @@ class BaseActivity(TestCase):
|
|||
self.assertEqual(result.name, "MOUSE?? MOUSE!!")
|
||||
|
||||
def test_to_model_invalid_model(self, _):
|
||||
""" catch mismatch between activity type and model type """
|
||||
"""catch mismatch between activity type and model type"""
|
||||
instance = ActivityObject(id="a", type="b")
|
||||
with self.assertRaises(ActivitySerializerError):
|
||||
instance.to_model(model=models.User)
|
||||
|
||||
@responses.activate
|
||||
def test_to_model_image(self, _):
|
||||
""" update an image field """
|
||||
"""update an image field"""
|
||||
activity = activitypub.Person(
|
||||
id=self.user.remote_id,
|
||||
name="New Name",
|
||||
|
@ -146,7 +146,7 @@ class BaseActivity(TestCase):
|
|||
self.assertEqual(self.user.key_pair.public_key, "hi")
|
||||
|
||||
def test_to_model_many_to_many(self, _):
|
||||
""" annoying that these all need special handling """
|
||||
"""annoying that these all need special handling"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
status = models.Status.objects.create(
|
||||
content="test status",
|
||||
|
@ -216,7 +216,7 @@ class BaseActivity(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_set_related_field(self, _):
|
||||
""" celery task to add back-references to created objects """
|
||||
"""celery task to add back-references to created objects"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
status = models.Status.objects.create(
|
||||
content="test status",
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm import activitypub, models
|
|||
|
||||
|
||||
class Quotation(TestCase):
|
||||
""" we have hecka ways to create statuses """
|
||||
"""we have hecka ways to create statuses"""
|
||||
|
||||
def setUp(self):
|
||||
""" model objects we'll need """
|
||||
"""model objects we'll need"""
|
||||
with patch("bookwyrm.models.user.set_remote_server.delay"):
|
||||
self.user = models.User.objects.create_user(
|
||||
"mouse",
|
||||
|
@ -30,7 +30,7 @@ class Quotation(TestCase):
|
|||
self.status_data = json.loads(datafile.read_bytes())
|
||||
|
||||
def test_quotation_activity(self):
|
||||
""" create a Quoteation ap object from json """
|
||||
"""create a Quoteation ap object from json"""
|
||||
quotation = activitypub.Quotation(**self.status_data)
|
||||
|
||||
self.assertEqual(quotation.type, "Quotation")
|
||||
|
@ -41,7 +41,7 @@ class Quotation(TestCase):
|
|||
self.assertEqual(quotation.published, "2020-05-10T02:38:31.150343+00:00")
|
||||
|
||||
def test_activity_to_model(self):
|
||||
""" create a model instance from an activity object """
|
||||
"""create a model instance from an activity object"""
|
||||
activity = activitypub.Quotation(**self.status_data)
|
||||
quotation = activity.to_model(model=models.Quotation)
|
||||
|
||||
|
|
|
@ -10,10 +10,10 @@ from bookwyrm.settings import DOMAIN
|
|||
|
||||
|
||||
class AbstractConnector(TestCase):
|
||||
""" generic code for connecting to outside data sources """
|
||||
"""generic code for connecting to outside data sources"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need an example connector """
|
||||
"""we need an example connector"""
|
||||
self.connector_info = models.Connector.objects.create(
|
||||
identifier="example.com",
|
||||
connector_file="openlibrary",
|
||||
|
@ -38,7 +38,7 @@ class AbstractConnector(TestCase):
|
|||
self.edition_data = edition_data
|
||||
|
||||
class TestConnector(abstract_connector.AbstractConnector):
|
||||
""" nothing added here """
|
||||
"""nothing added here"""
|
||||
|
||||
def format_search_result(self, search_result):
|
||||
return search_result
|
||||
|
@ -81,18 +81,18 @@ class AbstractConnector(TestCase):
|
|||
)
|
||||
|
||||
def test_abstract_connector_init(self):
|
||||
""" barebones connector for search with defaults """
|
||||
"""barebones connector for search with defaults"""
|
||||
self.assertIsInstance(self.connector.book_mappings, list)
|
||||
|
||||
def test_is_available(self):
|
||||
""" this isn't used.... """
|
||||
"""this isn't used...."""
|
||||
self.assertTrue(self.connector.is_available())
|
||||
self.connector.max_query_count = 1
|
||||
self.connector.connector.query_count = 2
|
||||
self.assertFalse(self.connector.is_available())
|
||||
|
||||
def test_get_or_create_book_existing(self):
|
||||
""" find an existing book by remote/origin id """
|
||||
"""find an existing book by remote/origin id"""
|
||||
self.assertEqual(models.Book.objects.count(), 1)
|
||||
self.assertEqual(
|
||||
self.book.remote_id, "https://%s/book/%d" % (DOMAIN, self.book.id)
|
||||
|
@ -113,7 +113,7 @@ class AbstractConnector(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_get_or_create_book_deduped(self):
|
||||
""" load remote data and deduplicate """
|
||||
"""load remote data and deduplicate"""
|
||||
responses.add(
|
||||
responses.GET, "https://example.com/book/abcd", json=self.edition_data
|
||||
)
|
||||
|
@ -125,7 +125,7 @@ class AbstractConnector(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_get_or_create_author(self):
|
||||
""" load an author """
|
||||
"""load an author"""
|
||||
self.connector.author_mappings = [
|
||||
Mapping("id"),
|
||||
Mapping("name"),
|
||||
|
@ -142,7 +142,7 @@ class AbstractConnector(TestCase):
|
|||
self.assertEqual(result.origin_id, "https://www.example.com/author")
|
||||
|
||||
def test_get_or_create_author_existing(self):
|
||||
""" get an existing author """
|
||||
"""get an existing author"""
|
||||
author = models.Author.objects.create(name="Test Author")
|
||||
result = self.connector.get_or_create_author(author.remote_id)
|
||||
self.assertEqual(author, result)
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm.connectors.abstract_connector import Mapping, SearchResult
|
|||
|
||||
|
||||
class AbstractConnector(TestCase):
|
||||
""" generic code for connecting to outside data sources """
|
||||
"""generic code for connecting to outside data sources"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need an example connector """
|
||||
"""we need an example connector"""
|
||||
self.connector_info = models.Connector.objects.create(
|
||||
identifier="example.com",
|
||||
connector_file="openlibrary",
|
||||
|
@ -23,7 +23,7 @@ class AbstractConnector(TestCase):
|
|||
)
|
||||
|
||||
class TestConnector(abstract_connector.AbstractMinimalConnector):
|
||||
""" nothing added here """
|
||||
"""nothing added here"""
|
||||
|
||||
def format_search_result(self, search_result):
|
||||
return search_result
|
||||
|
@ -43,7 +43,7 @@ class AbstractConnector(TestCase):
|
|||
self.test_connector = TestConnector("example.com")
|
||||
|
||||
def test_abstract_minimal_connector_init(self):
|
||||
""" barebones connector for search with defaults """
|
||||
"""barebones connector for search with defaults"""
|
||||
connector = self.test_connector
|
||||
self.assertEqual(connector.connector, self.connector_info)
|
||||
self.assertEqual(connector.base_url, "https://example.com")
|
||||
|
@ -58,7 +58,7 @@ class AbstractConnector(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_search(self):
|
||||
""" makes an http request to the outside service """
|
||||
"""makes an http request to the outside service"""
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"https://example.com/search?q=a%20book%20title",
|
||||
|
@ -73,7 +73,7 @@ class AbstractConnector(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_search_min_confidence(self):
|
||||
""" makes an http request to the outside service """
|
||||
"""makes an http request to the outside service"""
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"https://example.com/search?q=a%20book%20title&min_confidence=1",
|
||||
|
@ -85,7 +85,7 @@ class AbstractConnector(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_isbn_search(self):
|
||||
""" makes an http request to the outside service """
|
||||
"""makes an http request to the outside service"""
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"https://example.com/isbn?q=123456",
|
||||
|
@ -96,7 +96,7 @@ class AbstractConnector(TestCase):
|
|||
self.assertEqual(len(results), 10)
|
||||
|
||||
def test_search_result(self):
|
||||
""" a class that stores info about a search result """
|
||||
"""a class that stores info about a search result"""
|
||||
result = SearchResult(
|
||||
title="Title",
|
||||
key="https://example.com/book/1",
|
||||
|
@ -109,21 +109,21 @@ class AbstractConnector(TestCase):
|
|||
self.assertEqual(result.title, "Title")
|
||||
|
||||
def test_create_mapping(self):
|
||||
""" maps remote fields for book data to bookwyrm activitypub fields """
|
||||
"""maps remote fields for book data to bookwyrm activitypub fields"""
|
||||
mapping = Mapping("isbn")
|
||||
self.assertEqual(mapping.local_field, "isbn")
|
||||
self.assertEqual(mapping.remote_field, "isbn")
|
||||
self.assertEqual(mapping.formatter("bb"), "bb")
|
||||
|
||||
def test_create_mapping_with_remote(self):
|
||||
""" the remote field is different than the local field """
|
||||
"""the remote field is different than the local field"""
|
||||
mapping = Mapping("isbn", remote_field="isbn13")
|
||||
self.assertEqual(mapping.local_field, "isbn")
|
||||
self.assertEqual(mapping.remote_field, "isbn13")
|
||||
self.assertEqual(mapping.formatter("bb"), "bb")
|
||||
|
||||
def test_create_mapping_with_formatter(self):
|
||||
""" a function is provided to modify the data """
|
||||
"""a function is provided to modify the data"""
|
||||
formatter = lambda x: "aa" + x
|
||||
mapping = Mapping("isbn", formatter=formatter)
|
||||
self.assertEqual(mapping.local_field, "isbn")
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm.connectors.abstract_connector import SearchResult
|
|||
|
||||
|
||||
class BookWyrmConnector(TestCase):
|
||||
""" this connector doesn't do much, just search """
|
||||
"""this connector doesn't do much, just search"""
|
||||
|
||||
def setUp(self):
|
||||
""" create the connector """
|
||||
"""create the connector"""
|
||||
models.Connector.objects.create(
|
||||
identifier="example.com",
|
||||
connector_file="bookwyrm_connector",
|
||||
|
@ -24,14 +24,14 @@ class BookWyrmConnector(TestCase):
|
|||
self.connector = Connector("example.com")
|
||||
|
||||
def test_get_or_create_book_existing(self):
|
||||
""" load book activity """
|
||||
"""load book activity"""
|
||||
work = models.Work.objects.create(title="Test Work")
|
||||
book = models.Edition.objects.create(title="Test Edition", parent_work=work)
|
||||
result = self.connector.get_or_create_book(book.remote_id)
|
||||
self.assertEqual(book, result)
|
||||
|
||||
def test_format_search_result(self):
|
||||
""" create a SearchResult object from search response json """
|
||||
"""create a SearchResult object from search response json"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/bw_search.json")
|
||||
search_data = json.loads(datafile.read_bytes())
|
||||
results = self.connector.parse_search_data(search_data)
|
||||
|
@ -46,7 +46,7 @@ class BookWyrmConnector(TestCase):
|
|||
self.assertEqual(result.connector, self.connector)
|
||||
|
||||
def test_format_isbn_search_result(self):
|
||||
""" just gotta attach the connector """
|
||||
"""just gotta attach the connector"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/bw_search.json")
|
||||
search_data = json.loads(datafile.read_bytes())
|
||||
results = self.connector.parse_isbn_search_data(search_data)
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm.connectors.self_connector import Connector as SelfConnector
|
|||
|
||||
|
||||
class ConnectorManager(TestCase):
|
||||
""" interface between the app and various connectors """
|
||||
"""interface between the app and various connectors"""
|
||||
|
||||
def setUp(self):
|
||||
""" we'll need some books and a connector info entry """
|
||||
"""we'll need some books and a connector info entry"""
|
||||
self.work = models.Work.objects.create(title="Example Work")
|
||||
|
||||
self.edition = models.Edition.objects.create(
|
||||
|
@ -32,7 +32,7 @@ class ConnectorManager(TestCase):
|
|||
)
|
||||
|
||||
def test_get_or_create_connector(self):
|
||||
""" loads a connector if the data source is known or creates one """
|
||||
"""loads a connector if the data source is known or creates one"""
|
||||
remote_id = "https://example.com/object/1"
|
||||
connector = connector_manager.get_or_create_connector(remote_id)
|
||||
self.assertIsInstance(connector, BookWyrmConnector)
|
||||
|
@ -43,7 +43,7 @@ class ConnectorManager(TestCase):
|
|||
self.assertEqual(connector.identifier, same_connector.identifier)
|
||||
|
||||
def test_get_connectors(self):
|
||||
""" load all connectors """
|
||||
"""load all connectors"""
|
||||
remote_id = "https://example.com/object/1"
|
||||
connector_manager.get_or_create_connector(remote_id)
|
||||
connectors = list(connector_manager.get_connectors())
|
||||
|
@ -52,7 +52,7 @@ class ConnectorManager(TestCase):
|
|||
self.assertIsInstance(connectors[1], BookWyrmConnector)
|
||||
|
||||
def test_search(self):
|
||||
""" search all connectors """
|
||||
"""search all connectors"""
|
||||
results = connector_manager.search("Example")
|
||||
self.assertEqual(len(results), 1)
|
||||
self.assertIsInstance(results[0]["connector"], SelfConnector)
|
||||
|
@ -60,7 +60,7 @@ class ConnectorManager(TestCase):
|
|||
self.assertEqual(results[0]["results"][0].title, "Example Edition")
|
||||
|
||||
def test_search_isbn(self):
|
||||
""" special handling if a query resembles an isbn """
|
||||
"""special handling if a query resembles an isbn"""
|
||||
results = connector_manager.search("0000000000")
|
||||
self.assertEqual(len(results), 1)
|
||||
self.assertIsInstance(results[0]["connector"], SelfConnector)
|
||||
|
@ -68,20 +68,20 @@ class ConnectorManager(TestCase):
|
|||
self.assertEqual(results[0]["results"][0].title, "Example Edition")
|
||||
|
||||
def test_local_search(self):
|
||||
""" search only the local database """
|
||||
"""search only the local database"""
|
||||
results = connector_manager.local_search("Example")
|
||||
self.assertEqual(len(results), 1)
|
||||
self.assertEqual(results[0].title, "Example Edition")
|
||||
|
||||
def test_first_search_result(self):
|
||||
""" only get one search result """
|
||||
"""only get one search result"""
|
||||
result = connector_manager.first_search_result("Example")
|
||||
self.assertEqual(result.title, "Example Edition")
|
||||
no_result = connector_manager.first_search_result("dkjfhg")
|
||||
self.assertIsNone(no_result)
|
||||
|
||||
def test_load_connector(self):
|
||||
""" load a connector object from the database entry """
|
||||
"""load a connector object from the database entry"""
|
||||
connector = connector_manager.load_connector(self.connector)
|
||||
self.assertIsInstance(connector, SelfConnector)
|
||||
self.assertEqual(connector.identifier, "test_connector")
|
||||
|
|
|
@ -16,10 +16,10 @@ from bookwyrm.connectors.connector_manager import ConnectorException
|
|||
|
||||
|
||||
class Openlibrary(TestCase):
|
||||
""" test loading data from openlibrary.org """
|
||||
"""test loading data from openlibrary.org"""
|
||||
|
||||
def setUp(self):
|
||||
""" creates the connector we'll use """
|
||||
"""creates the connector we'll use"""
|
||||
models.Connector.objects.create(
|
||||
identifier="openlibrary.org",
|
||||
name="OpenLibrary",
|
||||
|
@ -42,7 +42,7 @@ class Openlibrary(TestCase):
|
|||
self.edition_list_data = json.loads(edition_list_file.read_bytes())
|
||||
|
||||
def test_get_remote_id_from_data(self):
|
||||
""" format the remote id from the data """
|
||||
"""format the remote id from the data"""
|
||||
data = {"key": "/work/OL1234W"}
|
||||
result = self.connector.get_remote_id_from_data(data)
|
||||
self.assertEqual(result, "https://openlibrary.org/work/OL1234W")
|
||||
|
@ -51,13 +51,13 @@ class Openlibrary(TestCase):
|
|||
self.connector.get_remote_id_from_data({})
|
||||
|
||||
def test_is_work_data(self):
|
||||
""" detect if the loaded json is a work """
|
||||
"""detect if the loaded json is a work"""
|
||||
self.assertEqual(self.connector.is_work_data(self.work_data), True)
|
||||
self.assertEqual(self.connector.is_work_data(self.edition_data), False)
|
||||
|
||||
@responses.activate
|
||||
def test_get_edition_from_work_data(self):
|
||||
""" loads a list of editions """
|
||||
"""loads a list of editions"""
|
||||
data = {"key": "/work/OL1234W"}
|
||||
responses.add(
|
||||
responses.GET,
|
||||
|
@ -74,7 +74,7 @@ class Openlibrary(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_get_work_from_edition_data(self):
|
||||
""" loads a list of editions """
|
||||
"""loads a list of editions"""
|
||||
data = {"works": [{"key": "/work/OL1234W"}]}
|
||||
responses.add(
|
||||
responses.GET,
|
||||
|
@ -87,7 +87,7 @@ class Openlibrary(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_get_authors_from_data(self):
|
||||
""" find authors in data """
|
||||
"""find authors in data"""
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"https://openlibrary.org/authors/OL382982A",
|
||||
|
@ -112,13 +112,13 @@ class Openlibrary(TestCase):
|
|||
self.assertEqual(result.openlibrary_key, "OL453734A")
|
||||
|
||||
def test_get_cover_url(self):
|
||||
""" formats a url that should contain the cover image """
|
||||
"""formats a url that should contain the cover image"""
|
||||
blob = ["image"]
|
||||
result = self.connector.get_cover_url(blob)
|
||||
self.assertEqual(result, "https://covers.openlibrary.org/b/id/image-L.jpg")
|
||||
|
||||
def test_parse_search_result(self):
|
||||
""" extract the results from the search json response """
|
||||
"""extract the results from the search json response"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_search.json")
|
||||
search_data = json.loads(datafile.read_bytes())
|
||||
result = self.connector.parse_search_data(search_data)
|
||||
|
@ -126,7 +126,7 @@ class Openlibrary(TestCase):
|
|||
self.assertEqual(len(result), 2)
|
||||
|
||||
def test_format_search_result(self):
|
||||
""" translate json from openlibrary into SearchResult """
|
||||
"""translate json from openlibrary into SearchResult"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_search.json")
|
||||
search_data = json.loads(datafile.read_bytes())
|
||||
results = self.connector.parse_search_data(search_data)
|
||||
|
@ -141,7 +141,7 @@ class Openlibrary(TestCase):
|
|||
self.assertEqual(result.connector, self.connector)
|
||||
|
||||
def test_parse_isbn_search_result(self):
|
||||
""" extract the results from the search json response """
|
||||
"""extract the results from the search json response"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_isbn_search.json")
|
||||
search_data = json.loads(datafile.read_bytes())
|
||||
result = self.connector.parse_isbn_search_data(search_data)
|
||||
|
@ -149,7 +149,7 @@ class Openlibrary(TestCase):
|
|||
self.assertEqual(len(result), 1)
|
||||
|
||||
def test_format_isbn_search_result(self):
|
||||
""" translate json from openlibrary into SearchResult """
|
||||
"""translate json from openlibrary into SearchResult"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ol_isbn_search.json")
|
||||
search_data = json.loads(datafile.read_bytes())
|
||||
results = self.connector.parse_isbn_search_data(search_data)
|
||||
|
@ -165,7 +165,7 @@ class Openlibrary(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_load_edition_data(self):
|
||||
""" format url from key and make request """
|
||||
"""format url from key and make request"""
|
||||
key = "OL1234W"
|
||||
responses.add(
|
||||
responses.GET,
|
||||
|
@ -177,7 +177,7 @@ class Openlibrary(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_expand_book_data(self):
|
||||
""" given a book, get more editions """
|
||||
"""given a book, get more editions"""
|
||||
work = models.Work.objects.create(title="Test Work", openlibrary_key="OL1234W")
|
||||
edition = models.Edition.objects.create(title="Test Edition", parent_work=work)
|
||||
|
||||
|
@ -194,29 +194,29 @@ class Openlibrary(TestCase):
|
|||
self.connector.expand_book_data(work)
|
||||
|
||||
def test_get_description(self):
|
||||
""" should do some cleanup on the description data """
|
||||
"""should do some cleanup on the description data"""
|
||||
description = get_description(self.work_data["description"])
|
||||
expected = "First in the Old Kingdom/Abhorsen series."
|
||||
self.assertEqual(description, expected)
|
||||
|
||||
def test_get_openlibrary_key(self):
|
||||
""" extracts the uuid """
|
||||
"""extracts the uuid"""
|
||||
key = get_openlibrary_key("/books/OL27320736M")
|
||||
self.assertEqual(key, "OL27320736M")
|
||||
|
||||
def test_get_languages(self):
|
||||
""" looks up languages from a list """
|
||||
"""looks up languages from a list"""
|
||||
languages = get_languages(self.edition_data["languages"])
|
||||
self.assertEqual(languages, ["English"])
|
||||
|
||||
def test_pick_default_edition(self):
|
||||
""" detect if the loaded json is an edition """
|
||||
"""detect if the loaded json is an edition"""
|
||||
edition = pick_default_edition(self.edition_list_data["entries"])
|
||||
self.assertEqual(edition["key"], "/books/OL9788823M")
|
||||
|
||||
@responses.activate
|
||||
def test_create_edition_from_data(self):
|
||||
""" okay but can it actually create an edition with proper metadata """
|
||||
"""okay but can it actually create an edition with proper metadata"""
|
||||
work = models.Work.objects.create(title="Hello")
|
||||
responses.add(
|
||||
responses.GET,
|
||||
|
@ -240,7 +240,7 @@ class Openlibrary(TestCase):
|
|||
self.assertEqual(result.physical_format, "Hardcover")
|
||||
|
||||
def test_ignore_edition(self):
|
||||
""" skip editions with poor metadata """
|
||||
"""skip editions with poor metadata"""
|
||||
self.assertFalse(ignore_edition({"isbn_13": "hi"}))
|
||||
self.assertFalse(ignore_edition({"oclc_numbers": "hi"}))
|
||||
self.assertFalse(ignore_edition({"covers": "hi"}))
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm.settings import DOMAIN
|
|||
|
||||
|
||||
class SelfConnector(TestCase):
|
||||
""" just uses local data """
|
||||
"""just uses local data"""
|
||||
|
||||
def setUp(self):
|
||||
""" creating the connector """
|
||||
"""creating the connector"""
|
||||
models.Connector.objects.create(
|
||||
identifier=DOMAIN,
|
||||
name="Local",
|
||||
|
@ -27,7 +27,7 @@ class SelfConnector(TestCase):
|
|||
self.connector = Connector(DOMAIN)
|
||||
|
||||
def test_format_search_result(self):
|
||||
""" create a SearchResult """
|
||||
"""create a SearchResult"""
|
||||
author = models.Author.objects.create(name="Anonymous")
|
||||
edition = models.Edition.objects.create(
|
||||
title="Edition of Example Work",
|
||||
|
@ -42,7 +42,7 @@ class SelfConnector(TestCase):
|
|||
self.assertEqual(result.connector, self.connector)
|
||||
|
||||
def test_search_rank(self):
|
||||
""" prioritize certain results """
|
||||
"""prioritize certain results"""
|
||||
author = models.Author.objects.create(name="Anonymous")
|
||||
edition = models.Edition.objects.create(
|
||||
title="Edition of Example Work",
|
||||
|
@ -78,7 +78,7 @@ class SelfConnector(TestCase):
|
|||
self.assertEqual(results[2].title, "Edition of Example Work")
|
||||
|
||||
def test_search_multiple_editions(self):
|
||||
""" it should get rid of duplicate editions for the same work """
|
||||
"""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
|
||||
|
|
|
@ -14,10 +14,10 @@ from bookwyrm.settings import DOMAIN
|
|||
|
||||
|
||||
class GoodreadsImport(TestCase):
|
||||
""" importing from goodreads csv """
|
||||
"""importing from goodreads csv"""
|
||||
|
||||
def setUp(self):
|
||||
""" use a test csv """
|
||||
"""use a test csv"""
|
||||
self.importer = GoodreadsImporter()
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/goodreads.csv")
|
||||
self.csv = open(datafile, "r", encoding=self.importer.encoding)
|
||||
|
@ -44,7 +44,7 @@ class GoodreadsImport(TestCase):
|
|||
)
|
||||
|
||||
def test_create_job(self):
|
||||
""" creates the import job entry and checks csv """
|
||||
"""creates the import job entry and checks csv"""
|
||||
import_job = self.importer.create_job(self.user, self.csv, False, "public")
|
||||
self.assertEqual(import_job.user, self.user)
|
||||
self.assertEqual(import_job.include_reviews, False)
|
||||
|
@ -60,7 +60,7 @@ class GoodreadsImport(TestCase):
|
|||
self.assertEqual(import_items[2].data["Book Id"], "28694510")
|
||||
|
||||
def test_create_retry_job(self):
|
||||
""" trying again with items that didn't import """
|
||||
"""trying again with items that didn't import"""
|
||||
import_job = self.importer.create_job(self.user, self.csv, False, "unlisted")
|
||||
import_items = models.ImportItem.objects.filter(job=import_job).all()[:2]
|
||||
|
||||
|
@ -78,7 +78,7 @@ class GoodreadsImport(TestCase):
|
|||
self.assertEqual(retry_items[1].data["Book Id"], "52691223")
|
||||
|
||||
def test_start_import(self):
|
||||
""" begin loading books """
|
||||
"""begin loading books"""
|
||||
import_job = self.importer.create_job(self.user, self.csv, False, "unlisted")
|
||||
MockTask = namedtuple("Task", ("id"))
|
||||
mock_task = MockTask(7)
|
||||
|
@ -90,7 +90,7 @@ class GoodreadsImport(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_import_data(self):
|
||||
""" resolve entry """
|
||||
"""resolve entry"""
|
||||
import_job = self.importer.create_job(self.user, self.csv, False, "unlisted")
|
||||
book = models.Edition.objects.create(title="Test Book")
|
||||
|
||||
|
@ -105,7 +105,7 @@ class GoodreadsImport(TestCase):
|
|||
self.assertEqual(import_item.book.id, book.id)
|
||||
|
||||
def test_handle_imported_book(self):
|
||||
""" goodreads import added a book, this adds related connections """
|
||||
"""goodreads import added a book, this adds related connections"""
|
||||
shelf = self.user.shelf_set.filter(identifier="read").first()
|
||||
self.assertIsNone(shelf.books.first())
|
||||
|
||||
|
@ -138,7 +138,7 @@ class GoodreadsImport(TestCase):
|
|||
self.assertEqual(readthrough.finish_date.day, 25)
|
||||
|
||||
def test_handle_imported_book_already_shelved(self):
|
||||
""" goodreads import added a book, this adds related connections """
|
||||
"""goodreads import added a book, this adds related connections"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
shelf = self.user.shelf_set.filter(identifier="to-read").first()
|
||||
models.ShelfBook.objects.create(shelf=shelf, user=self.user, book=self.book)
|
||||
|
@ -171,7 +171,7 @@ class GoodreadsImport(TestCase):
|
|||
self.assertEqual(readthrough.finish_date.day, 25)
|
||||
|
||||
def test_handle_import_twice(self):
|
||||
""" re-importing books """
|
||||
"""re-importing books"""
|
||||
shelf = self.user.shelf_set.filter(identifier="read").first()
|
||||
import_job = models.ImportJob.objects.create(user=self.user)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/goodreads.csv")
|
||||
|
@ -206,7 +206,7 @@ class GoodreadsImport(TestCase):
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
def test_handle_imported_book_review(self, _):
|
||||
""" goodreads review import """
|
||||
"""goodreads review import"""
|
||||
import_job = models.ImportJob.objects.create(user=self.user)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/goodreads.csv")
|
||||
csv_file = open(datafile, "r")
|
||||
|
@ -229,7 +229,7 @@ class GoodreadsImport(TestCase):
|
|||
self.assertEqual(review.privacy, "unlisted")
|
||||
|
||||
def test_handle_imported_book_reviews_disabled(self):
|
||||
""" goodreads review import """
|
||||
"""goodreads review import"""
|
||||
import_job = models.ImportJob.objects.create(user=self.user)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/goodreads.csv")
|
||||
csv_file = open(datafile, "r")
|
||||
|
|
|
@ -13,10 +13,10 @@ from bookwyrm.settings import DOMAIN
|
|||
|
||||
|
||||
class LibrarythingImport(TestCase):
|
||||
""" importing from librarything tsv """
|
||||
"""importing from librarything tsv"""
|
||||
|
||||
def setUp(self):
|
||||
""" use a test tsv """
|
||||
"""use a test tsv"""
|
||||
self.importer = LibrarythingImporter()
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/librarything.tsv")
|
||||
|
||||
|
@ -45,7 +45,7 @@ class LibrarythingImport(TestCase):
|
|||
)
|
||||
|
||||
def test_create_job(self):
|
||||
""" creates the import job entry and checks csv """
|
||||
"""creates the import job entry and checks csv"""
|
||||
import_job = self.importer.create_job(self.user, self.csv, False, "public")
|
||||
self.assertEqual(import_job.user, self.user)
|
||||
self.assertEqual(import_job.include_reviews, False)
|
||||
|
@ -61,7 +61,7 @@ class LibrarythingImport(TestCase):
|
|||
self.assertEqual(import_items[2].data["Book Id"], "5015399")
|
||||
|
||||
def test_create_retry_job(self):
|
||||
""" trying again with items that didn't import """
|
||||
"""trying again with items that didn't import"""
|
||||
import_job = self.importer.create_job(self.user, self.csv, False, "unlisted")
|
||||
import_items = models.ImportItem.objects.filter(job=import_job).all()[:2]
|
||||
|
||||
|
@ -80,7 +80,7 @@ class LibrarythingImport(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_import_data(self):
|
||||
""" resolve entry """
|
||||
"""resolve entry"""
|
||||
import_job = self.importer.create_job(self.user, self.csv, False, "unlisted")
|
||||
book = models.Edition.objects.create(title="Test Book")
|
||||
|
||||
|
@ -95,7 +95,7 @@ class LibrarythingImport(TestCase):
|
|||
self.assertEqual(import_item.book.id, book.id)
|
||||
|
||||
def test_handle_imported_book(self):
|
||||
""" librarything import added a book, this adds related connections """
|
||||
"""librarything import added a book, this adds related connections"""
|
||||
shelf = self.user.shelf_set.filter(identifier="read").first()
|
||||
self.assertIsNone(shelf.books.first())
|
||||
|
||||
|
@ -130,7 +130,7 @@ class LibrarythingImport(TestCase):
|
|||
self.assertEqual(readthrough.finish_date.day, 8)
|
||||
|
||||
def test_handle_imported_book_already_shelved(self):
|
||||
""" librarything import added a book, this adds related connections """
|
||||
"""librarything import added a book, this adds related connections"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
shelf = self.user.shelf_set.filter(identifier="to-read").first()
|
||||
models.ShelfBook.objects.create(shelf=shelf, user=self.user, book=self.book)
|
||||
|
@ -165,7 +165,7 @@ class LibrarythingImport(TestCase):
|
|||
self.assertEqual(readthrough.finish_date.day, 8)
|
||||
|
||||
def test_handle_import_twice(self):
|
||||
""" re-importing books """
|
||||
"""re-importing books"""
|
||||
shelf = self.user.shelf_set.filter(identifier="read").first()
|
||||
import_job = models.ImportJob.objects.create(user=self.user)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/librarything.tsv")
|
||||
|
@ -202,7 +202,7 @@ class LibrarythingImport(TestCase):
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
def test_handle_imported_book_review(self, _):
|
||||
""" librarything review import """
|
||||
"""librarything review import"""
|
||||
import_job = models.ImportJob.objects.create(user=self.user)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/librarything.tsv")
|
||||
csv_file = open(datafile, "r", encoding=self.importer.encoding)
|
||||
|
@ -225,7 +225,7 @@ class LibrarythingImport(TestCase):
|
|||
self.assertEqual(review.privacy, "unlisted")
|
||||
|
||||
def test_handle_imported_book_reviews_disabled(self):
|
||||
""" librarything review import """
|
||||
"""librarything review import"""
|
||||
import_job = models.ImportJob.objects.create(user=self.user)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/librarything.tsv")
|
||||
csv_file = open(datafile, "r", encoding=self.importer.encoding)
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm.management.commands.populate_streams import populate_streams
|
|||
|
||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||
class Activitystreams(TestCase):
|
||||
""" using redis to build activity streams """
|
||||
"""using redis to build activity streams"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need some stuff """
|
||||
"""we need some stuff"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "password", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -31,7 +31,7 @@ class Activitystreams(TestCase):
|
|||
self.book = models.Edition.objects.create(title="test book")
|
||||
|
||||
def test_populate_streams(self, _):
|
||||
""" make sure the function on the redis manager gets called """
|
||||
"""make sure the function on the redis manager gets called"""
|
||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||
models.Comment.objects.create(
|
||||
user=self.local_user, content="hi", book=self.book
|
||||
|
|
|
@ -15,10 +15,10 @@ from bookwyrm.models.activitypub_mixin import ActivityMixin, ObjectMixin
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
class ActivitypubMixins(TestCase):
|
||||
""" functionality shared across models """
|
||||
"""functionality shared across models"""
|
||||
|
||||
def setUp(self):
|
||||
""" shared data """
|
||||
"""shared data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.com", "mouseword", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -46,16 +46,16 @@ class ActivitypubMixins(TestCase):
|
|||
|
||||
# ActivitypubMixin
|
||||
def test_to_activity(self, _):
|
||||
""" model to ActivityPub json """
|
||||
"""model to ActivityPub json"""
|
||||
|
||||
@dataclass(init=False)
|
||||
class TestActivity(ActivityObject):
|
||||
""" real simple mock """
|
||||
"""real simple mock"""
|
||||
|
||||
type: str = "Test"
|
||||
|
||||
class TestModel(ActivitypubMixin, base_model.BookWyrmModel):
|
||||
""" real simple mock model because BookWyrmModel is abstract """
|
||||
"""real simple mock model because BookWyrmModel is abstract"""
|
||||
|
||||
instance = TestModel()
|
||||
instance.remote_id = "https://www.example.com/test"
|
||||
|
@ -67,7 +67,7 @@ class ActivitypubMixins(TestCase):
|
|||
self.assertEqual(activity["type"], "Test")
|
||||
|
||||
def test_find_existing_by_remote_id(self, _):
|
||||
""" attempt to match a remote id to an object in the db """
|
||||
"""attempt to match a remote id to an object in the db"""
|
||||
# uses a different remote id scheme
|
||||
# this isn't really part of this test directly but it's helpful to state
|
||||
book = models.Edition.objects.create(
|
||||
|
@ -100,7 +100,7 @@ class ActivitypubMixins(TestCase):
|
|||
result = models.Status.find_existing_by_remote_id("https://comment.net")
|
||||
|
||||
def test_find_existing(self, _):
|
||||
""" match a blob of data to a model """
|
||||
"""match a blob of data to a model"""
|
||||
book = models.Edition.objects.create(
|
||||
title="Test edition",
|
||||
openlibrary_key="OL1234",
|
||||
|
@ -110,7 +110,7 @@ class ActivitypubMixins(TestCase):
|
|||
self.assertEqual(result, book)
|
||||
|
||||
def test_get_recipients_public_object(self, _):
|
||||
""" determines the recipients for an object's broadcast """
|
||||
"""determines the recipients for an object's broadcast"""
|
||||
MockSelf = namedtuple("Self", ("privacy"))
|
||||
mock_self = MockSelf("public")
|
||||
recipients = ActivitypubMixin.get_recipients(mock_self)
|
||||
|
@ -118,7 +118,7 @@ class ActivitypubMixins(TestCase):
|
|||
self.assertEqual(recipients[0], self.remote_user.inbox)
|
||||
|
||||
def test_get_recipients_public_user_object_no_followers(self, _):
|
||||
""" determines the recipients for a user's object broadcast """
|
||||
"""determines the recipients for a user's object broadcast"""
|
||||
MockSelf = namedtuple("Self", ("privacy", "user"))
|
||||
mock_self = MockSelf("public", self.local_user)
|
||||
|
||||
|
@ -126,7 +126,7 @@ class ActivitypubMixins(TestCase):
|
|||
self.assertEqual(len(recipients), 0)
|
||||
|
||||
def test_get_recipients_public_user_object(self, _):
|
||||
""" determines the recipients for a user's object broadcast """
|
||||
"""determines the recipients for a user's object broadcast"""
|
||||
MockSelf = namedtuple("Self", ("privacy", "user"))
|
||||
mock_self = MockSelf("public", self.local_user)
|
||||
self.local_user.followers.add(self.remote_user)
|
||||
|
@ -136,7 +136,7 @@ class ActivitypubMixins(TestCase):
|
|||
self.assertEqual(recipients[0], self.remote_user.inbox)
|
||||
|
||||
def test_get_recipients_public_user_object_with_mention(self, _):
|
||||
""" determines the recipients for a user's object broadcast """
|
||||
"""determines the recipients for a user's object broadcast"""
|
||||
MockSelf = namedtuple("Self", ("privacy", "user"))
|
||||
mock_self = MockSelf("public", self.local_user)
|
||||
self.local_user.followers.add(self.remote_user)
|
||||
|
@ -159,7 +159,7 @@ class ActivitypubMixins(TestCase):
|
|||
self.assertTrue(self.remote_user.inbox in recipients)
|
||||
|
||||
def test_get_recipients_direct(self, _):
|
||||
""" determines the recipients for a user's object broadcast """
|
||||
"""determines the recipients for a user's object broadcast"""
|
||||
MockSelf = namedtuple("Self", ("privacy", "user"))
|
||||
mock_self = MockSelf("public", self.local_user)
|
||||
self.local_user.followers.add(self.remote_user)
|
||||
|
@ -181,7 +181,7 @@ class ActivitypubMixins(TestCase):
|
|||
self.assertEqual(recipients[0], another_remote_user.inbox)
|
||||
|
||||
def test_get_recipients_combine_inboxes(self, _):
|
||||
""" should combine users with the same shared_inbox """
|
||||
"""should combine users with the same shared_inbox"""
|
||||
self.remote_user.shared_inbox = "http://example.com/inbox"
|
||||
self.remote_user.save(broadcast=False)
|
||||
with patch("bookwyrm.models.user.set_remote_server.delay"):
|
||||
|
@ -205,7 +205,7 @@ class ActivitypubMixins(TestCase):
|
|||
self.assertEqual(recipients[0], "http://example.com/inbox")
|
||||
|
||||
def test_get_recipients_software(self, _):
|
||||
""" should differentiate between bookwyrm and other remote users """
|
||||
"""should differentiate between bookwyrm and other remote users"""
|
||||
with patch("bookwyrm.models.user.set_remote_server.delay"):
|
||||
another_remote_user = models.User.objects.create_user(
|
||||
"nutria",
|
||||
|
@ -235,13 +235,13 @@ class ActivitypubMixins(TestCase):
|
|||
|
||||
# ObjectMixin
|
||||
def test_object_save_create(self, _):
|
||||
""" should save uneventufully when broadcast is disabled """
|
||||
"""should save uneventufully when broadcast is disabled"""
|
||||
|
||||
class Success(Exception):
|
||||
""" this means we got to the right method """
|
||||
"""this means we got to the right method"""
|
||||
|
||||
class ObjectModel(ObjectMixin, base_model.BookWyrmModel):
|
||||
""" real simple mock model because BookWyrmModel is abstract """
|
||||
"""real simple mock model because BookWyrmModel is abstract"""
|
||||
|
||||
user = models.fields.ForeignKey("User", on_delete=db.models.CASCADE)
|
||||
|
||||
|
@ -252,7 +252,7 @@ class ActivitypubMixins(TestCase):
|
|||
def broadcast(
|
||||
self, activity, sender, **kwargs
|
||||
): # pylint: disable=arguments-differ
|
||||
""" do something """
|
||||
"""do something"""
|
||||
raise Success()
|
||||
|
||||
def to_create_activity(self, user): # pylint: disable=arguments-differ
|
||||
|
@ -266,13 +266,13 @@ class ActivitypubMixins(TestCase):
|
|||
ObjectModel(user=None).save()
|
||||
|
||||
def test_object_save_update(self, _):
|
||||
""" should save uneventufully when broadcast is disabled """
|
||||
"""should save uneventufully when broadcast is disabled"""
|
||||
|
||||
class Success(Exception):
|
||||
""" this means we got to the right method """
|
||||
"""this means we got to the right method"""
|
||||
|
||||
class UpdateObjectModel(ObjectMixin, base_model.BookWyrmModel):
|
||||
""" real simple mock model because BookWyrmModel is abstract """
|
||||
"""real simple mock model because BookWyrmModel is abstract"""
|
||||
|
||||
user = models.fields.ForeignKey("User", on_delete=db.models.CASCADE)
|
||||
last_edited_by = models.fields.ForeignKey(
|
||||
|
@ -292,13 +292,13 @@ class ActivitypubMixins(TestCase):
|
|||
UpdateObjectModel(id=1, last_edited_by=self.local_user).save()
|
||||
|
||||
def test_object_save_delete(self, _):
|
||||
""" should create delete activities when objects are deleted by flag """
|
||||
"""should create delete activities when objects are deleted by flag"""
|
||||
|
||||
class ActivitySuccess(Exception):
|
||||
""" this means we got to the right method """
|
||||
"""this means we got to the right method"""
|
||||
|
||||
class DeletableObjectModel(ObjectMixin, base_model.BookWyrmModel):
|
||||
""" real simple mock model because BookWyrmModel is abstract """
|
||||
"""real simple mock model because BookWyrmModel is abstract"""
|
||||
|
||||
user = models.fields.ForeignKey("User", on_delete=db.models.CASCADE)
|
||||
deleted = models.fields.BooleanField()
|
||||
|
@ -314,7 +314,7 @@ class ActivitypubMixins(TestCase):
|
|||
DeletableObjectModel(id=1, user=self.local_user, deleted=True).save()
|
||||
|
||||
def test_to_delete_activity(self, _):
|
||||
""" wrapper for Delete activity """
|
||||
"""wrapper for Delete activity"""
|
||||
MockSelf = namedtuple("Self", ("remote_id", "to_activity"))
|
||||
mock_self = MockSelf(
|
||||
"https://example.com/status/1", lambda *args: self.object_mock
|
||||
|
@ -329,7 +329,7 @@ class ActivitypubMixins(TestCase):
|
|||
)
|
||||
|
||||
def test_to_update_activity(self, _):
|
||||
""" ditto above but for Update """
|
||||
"""ditto above but for Update"""
|
||||
MockSelf = namedtuple("Self", ("remote_id", "to_activity"))
|
||||
mock_self = MockSelf(
|
||||
"https://example.com/status/1", lambda *args: self.object_mock
|
||||
|
@ -347,7 +347,7 @@ class ActivitypubMixins(TestCase):
|
|||
|
||||
# Activity mixin
|
||||
def test_to_undo_activity(self, _):
|
||||
""" and again, for Undo """
|
||||
"""and again, for Undo"""
|
||||
MockSelf = namedtuple("Self", ("remote_id", "to_activity", "user"))
|
||||
mock_self = MockSelf(
|
||||
"https://example.com/status/1",
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm.settings import DOMAIN
|
|||
|
||||
|
||||
class BaseModel(TestCase):
|
||||
""" functionality shared across models """
|
||||
"""functionality shared across models"""
|
||||
|
||||
def setUp(self):
|
||||
""" shared data """
|
||||
"""shared data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.com", "mouseword", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -27,14 +27,14 @@ class BaseModel(TestCase):
|
|||
)
|
||||
|
||||
def test_remote_id(self):
|
||||
""" these should be generated """
|
||||
"""these should be generated"""
|
||||
instance = base_model.BookWyrmModel()
|
||||
instance.id = 1
|
||||
expected = instance.get_remote_id()
|
||||
self.assertEqual(expected, "https://%s/bookwyrmmodel/1" % DOMAIN)
|
||||
|
||||
def test_remote_id_with_user(self):
|
||||
""" format of remote id when there's a user object """
|
||||
"""format of remote id when there's a user object"""
|
||||
instance = base_model.BookWyrmModel()
|
||||
instance.user = self.local_user
|
||||
instance.id = 1
|
||||
|
@ -42,7 +42,7 @@ class BaseModel(TestCase):
|
|||
self.assertEqual(expected, "https://%s/user/mouse/bookwyrmmodel/1" % DOMAIN)
|
||||
|
||||
def test_set_remote_id(self):
|
||||
""" this function sets remote ids after creation """
|
||||
"""this function sets remote ids after creation"""
|
||||
# using Work because it BookWrymModel is abstract and this requires save
|
||||
# Work is a relatively not-fancy model.
|
||||
instance = models.Work.objects.create(title="work title")
|
||||
|
@ -59,7 +59,7 @@ class BaseModel(TestCase):
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
def test_object_visible_to_user(self, _):
|
||||
""" does a user have permission to view an object """
|
||||
"""does a user have permission to view an object"""
|
||||
obj = models.Status.objects.create(
|
||||
content="hi", user=self.remote_user, privacy="public"
|
||||
)
|
||||
|
@ -88,7 +88,7 @@ class BaseModel(TestCase):
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
def test_object_visible_to_user_follower(self, _):
|
||||
""" what you can see if you follow a user """
|
||||
"""what you can see if you follow a user"""
|
||||
self.remote_user.followers.add(self.local_user)
|
||||
obj = models.Status.objects.create(
|
||||
content="hi", user=self.remote_user, privacy="followers"
|
||||
|
@ -108,7 +108,7 @@ class BaseModel(TestCase):
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
def test_object_visible_to_user_blocked(self, _):
|
||||
""" you can't see it if they block you """
|
||||
"""you can't see it if they block you"""
|
||||
self.remote_user.blocks.add(self.local_user)
|
||||
obj = models.Status.objects.create(
|
||||
content="hi", user=self.remote_user, privacy="public"
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm.models.book import isbn_10_to_13, isbn_13_to_10
|
|||
|
||||
|
||||
class Book(TestCase):
|
||||
""" not too much going on in the books model but here we are """
|
||||
"""not too much going on in the books model but here we are"""
|
||||
|
||||
def setUp(self):
|
||||
""" we'll need some books """
|
||||
"""we'll need some books"""
|
||||
self.work = models.Work.objects.create(
|
||||
title="Example Work", remote_id="https://example.com/book/1"
|
||||
)
|
||||
|
@ -25,17 +25,17 @@ class Book(TestCase):
|
|||
)
|
||||
|
||||
def test_remote_id(self):
|
||||
""" fanciness with remote/origin ids """
|
||||
"""fanciness with remote/origin ids"""
|
||||
remote_id = "https://%s/book/%d" % (settings.DOMAIN, self.work.id)
|
||||
self.assertEqual(self.work.get_remote_id(), remote_id)
|
||||
self.assertEqual(self.work.remote_id, remote_id)
|
||||
|
||||
def test_create_book(self):
|
||||
""" you shouldn't be able to create Books (only editions and works) """
|
||||
"""you shouldn't be able to create Books (only editions and works)"""
|
||||
self.assertRaises(ValueError, models.Book.objects.create, title="Invalid Book")
|
||||
|
||||
def test_isbn_10_to_13(self):
|
||||
""" checksums and so on """
|
||||
"""checksums and so on"""
|
||||
isbn_10 = "178816167X"
|
||||
isbn_13 = isbn_10_to_13(isbn_10)
|
||||
self.assertEqual(isbn_13, "9781788161671")
|
||||
|
@ -45,7 +45,7 @@ class Book(TestCase):
|
|||
self.assertEqual(isbn_13, "9781788161671")
|
||||
|
||||
def test_isbn_13_to_10(self):
|
||||
""" checksums and so on """
|
||||
"""checksums and so on"""
|
||||
isbn_13 = "9781788161671"
|
||||
isbn_10 = isbn_13_to_10(isbn_13)
|
||||
self.assertEqual(isbn_10, "178816167X")
|
||||
|
@ -55,7 +55,7 @@ class Book(TestCase):
|
|||
self.assertEqual(isbn_10, "178816167X")
|
||||
|
||||
def test_get_edition_info(self):
|
||||
""" text slug about an edition """
|
||||
"""text slug about an edition"""
|
||||
book = models.Edition.objects.create(title="Test Edition")
|
||||
self.assertEqual(book.edition_info, "")
|
||||
|
||||
|
@ -77,7 +77,7 @@ class Book(TestCase):
|
|||
self.assertEqual(book.alt_text, "Test Edition (worm, Glorbish language, 2020)")
|
||||
|
||||
def test_get_rank(self):
|
||||
""" sets the data quality index for the book """
|
||||
"""sets the data quality index for the book"""
|
||||
# basic rank
|
||||
self.assertEqual(self.first_edition.edition_rank, 0)
|
||||
|
||||
|
|
|
@ -6,10 +6,10 @@ from bookwyrm import models
|
|||
|
||||
|
||||
class FederatedServer(TestCase):
|
||||
""" federate server management """
|
||||
"""federate server management"""
|
||||
|
||||
def setUp(self):
|
||||
""" we'll need a user """
|
||||
"""we'll need a user"""
|
||||
self.server = models.FederatedServer.objects.create(server_name="test.server")
|
||||
with patch("bookwyrm.models.user.set_remote_server.delay"):
|
||||
self.remote_user = models.User.objects.create_user(
|
||||
|
@ -36,7 +36,7 @@ class FederatedServer(TestCase):
|
|||
)
|
||||
|
||||
def test_block_unblock(self):
|
||||
""" block a server and all users on it """
|
||||
"""block a server and all users on it"""
|
||||
self.assertEqual(self.server.status, "federated")
|
||||
self.assertTrue(self.remote_user.is_active)
|
||||
self.assertFalse(self.inactive_remote_user.is_active)
|
||||
|
|
|
@ -25,10 +25,10 @@ from bookwyrm.models.activitypub_mixin import ActivitypubMixin
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class ActivitypubFields(TestCase):
|
||||
""" overwrites standard model feilds to work with activitypub """
|
||||
"""overwrites standard model feilds to work with activitypub"""
|
||||
|
||||
def test_validate_remote_id(self):
|
||||
""" should look like a url """
|
||||
"""should look like a url"""
|
||||
self.assertIsNone(fields.validate_remote_id("http://www.example.com"))
|
||||
self.assertIsNone(fields.validate_remote_id("https://www.example.com"))
|
||||
self.assertIsNone(fields.validate_remote_id("http://exle.com/dlg-23/x"))
|
||||
|
@ -45,7 +45,7 @@ class ActivitypubFields(TestCase):
|
|||
)
|
||||
|
||||
def test_activitypub_field_mixin(self):
|
||||
""" generic mixin with super basic to and from functionality """
|
||||
"""generic mixin with super basic to and from functionality"""
|
||||
instance = fields.ActivitypubFieldMixin()
|
||||
self.assertEqual(instance.field_to_activity("fish"), "fish")
|
||||
self.assertEqual(instance.field_from_activity("fish"), "fish")
|
||||
|
@ -63,11 +63,11 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(instance.get_activitypub_field(), "snakeCaseName")
|
||||
|
||||
def test_set_field_from_activity(self):
|
||||
""" setter from entire json blob """
|
||||
"""setter from entire json blob"""
|
||||
|
||||
@dataclass
|
||||
class TestModel:
|
||||
""" real simple mock """
|
||||
"""real simple mock"""
|
||||
|
||||
field_name: str
|
||||
|
||||
|
@ -82,11 +82,11 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(mock_model.field_name, "hi")
|
||||
|
||||
def test_set_activity_from_field(self):
|
||||
""" set json field given entire model """
|
||||
"""set json field given entire model"""
|
||||
|
||||
@dataclass
|
||||
class TestModel:
|
||||
""" real simple mock """
|
||||
"""real simple mock"""
|
||||
|
||||
field_name: str
|
||||
unrelated: str
|
||||
|
@ -100,7 +100,7 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(data["fieldName"], "bip")
|
||||
|
||||
def test_remote_id_field(self):
|
||||
""" just sets some defaults on charfield """
|
||||
"""just sets some defaults on charfield"""
|
||||
instance = fields.RemoteIdField()
|
||||
self.assertEqual(instance.max_length, 255)
|
||||
self.assertTrue(instance.deduplication_field)
|
||||
|
@ -109,7 +109,7 @@ class ActivitypubFields(TestCase):
|
|||
instance.run_validators("http://www.example.com/dlfjg 23/x")
|
||||
|
||||
def test_username_field(self):
|
||||
""" again, just setting defaults on username field """
|
||||
"""again, just setting defaults on username field"""
|
||||
instance = fields.UsernameField()
|
||||
self.assertEqual(instance.activitypub_field, "preferredUsername")
|
||||
self.assertEqual(instance.max_length, 150)
|
||||
|
@ -130,7 +130,7 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(instance.field_to_activity("test@example.com"), "test")
|
||||
|
||||
def test_privacy_field_defaults(self):
|
||||
""" post privacy field's many default values """
|
||||
"""post privacy field's many default values"""
|
||||
instance = fields.PrivacyField()
|
||||
self.assertEqual(instance.max_length, 255)
|
||||
self.assertEqual(
|
||||
|
@ -143,11 +143,11 @@ class ActivitypubFields(TestCase):
|
|||
)
|
||||
|
||||
def test_privacy_field_set_field_from_activity(self):
|
||||
""" translate between to/cc fields and privacy """
|
||||
"""translate between to/cc fields and privacy"""
|
||||
|
||||
@dataclass(init=False)
|
||||
class TestActivity(ActivityObject):
|
||||
""" real simple mock """
|
||||
"""real simple mock"""
|
||||
|
||||
to: List[str]
|
||||
cc: List[str]
|
||||
|
@ -155,7 +155,7 @@ class ActivitypubFields(TestCase):
|
|||
type: str = "Test"
|
||||
|
||||
class TestPrivacyModel(ActivitypubMixin, BookWyrmModel):
|
||||
""" real simple mock model because BookWyrmModel is abstract """
|
||||
"""real simple mock model because BookWyrmModel is abstract"""
|
||||
|
||||
privacy_field = fields.PrivacyField()
|
||||
mention_users = fields.TagField(User)
|
||||
|
@ -187,7 +187,7 @@ class ActivitypubFields(TestCase):
|
|||
@patch("bookwyrm.models.activitypub_mixin.ObjectMixin.broadcast")
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
def test_privacy_field_set_activity_from_field(self, *_):
|
||||
""" translate between to/cc fields and privacy """
|
||||
"""translate between to/cc fields and privacy"""
|
||||
user = User.objects.create_user(
|
||||
"rat", "rat@rat.rat", "ratword", local=True, localname="rat"
|
||||
)
|
||||
|
@ -231,7 +231,7 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(activity["cc"], [])
|
||||
|
||||
def test_foreign_key(self):
|
||||
""" should be able to format a related model """
|
||||
"""should be able to format a related model"""
|
||||
instance = fields.ForeignKey("User", on_delete=models.CASCADE)
|
||||
Serializable = namedtuple("Serializable", ("to_activity", "remote_id"))
|
||||
item = Serializable(lambda: {"a": "b"}, "https://e.b/c")
|
||||
|
@ -240,7 +240,7 @@ class ActivitypubFields(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_foreign_key_from_activity_str(self):
|
||||
""" create a new object from a foreign key """
|
||||
"""create a new object from a foreign key"""
|
||||
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
||||
userdata = json.loads(datafile.read_bytes())
|
||||
|
@ -264,7 +264,7 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(value.name, "MOUSE?? MOUSE!!")
|
||||
|
||||
def test_foreign_key_from_activity_dict(self):
|
||||
""" test recieving activity json """
|
||||
"""test recieving activity json"""
|
||||
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
||||
userdata = json.loads(datafile.read_bytes())
|
||||
|
@ -284,7 +284,7 @@ class ActivitypubFields(TestCase):
|
|||
# et cetera but we're not testing serializing user json
|
||||
|
||||
def test_foreign_key_from_activity_dict_existing(self):
|
||||
""" test receiving a dict of an existing object in the db """
|
||||
"""test receiving a dict of an existing object in the db"""
|
||||
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
||||
userdata = json.loads(datafile.read_bytes())
|
||||
|
@ -302,7 +302,7 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(value, user)
|
||||
|
||||
def test_foreign_key_from_activity_str_existing(self):
|
||||
""" test receiving a remote id of an existing object in the db """
|
||||
"""test receiving a remote id of an existing object in the db"""
|
||||
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
|
||||
user = User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||
|
@ -315,14 +315,14 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(value, user)
|
||||
|
||||
def test_one_to_one_field(self):
|
||||
""" a gussied up foreign key """
|
||||
"""a gussied up foreign key"""
|
||||
instance = fields.OneToOneField("User", on_delete=models.CASCADE)
|
||||
Serializable = namedtuple("Serializable", ("to_activity", "remote_id"))
|
||||
item = Serializable(lambda: {"a": "b"}, "https://e.b/c")
|
||||
self.assertEqual(instance.field_to_activity(item), {"a": "b"})
|
||||
|
||||
def test_many_to_many_field(self):
|
||||
""" lists! """
|
||||
"""lists!"""
|
||||
instance = fields.ManyToManyField("User")
|
||||
|
||||
Serializable = namedtuple("Serializable", ("to_activity", "remote_id"))
|
||||
|
@ -340,7 +340,7 @@ class ActivitypubFields(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_many_to_many_field_from_activity(self):
|
||||
""" resolve related fields for a list, takes a list of remote ids """
|
||||
"""resolve related fields for a list, takes a list of remote ids"""
|
||||
instance = fields.ManyToManyField(User)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
||||
userdata = json.loads(datafile.read_bytes())
|
||||
|
@ -360,7 +360,7 @@ class ActivitypubFields(TestCase):
|
|||
self.assertIsInstance(value[0], User)
|
||||
|
||||
def test_tag_field(self):
|
||||
""" a special type of many to many field """
|
||||
"""a special type of many to many field"""
|
||||
instance = fields.TagField("User")
|
||||
|
||||
Serializable = namedtuple(
|
||||
|
@ -379,13 +379,13 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(result[0].type, "Serializable")
|
||||
|
||||
def test_tag_field_from_activity(self):
|
||||
""" loadin' a list of items from Links """
|
||||
"""loadin' a list of items from Links"""
|
||||
# TODO
|
||||
|
||||
@responses.activate
|
||||
@patch("bookwyrm.models.activitypub_mixin.ObjectMixin.broadcast")
|
||||
def test_image_field(self, _):
|
||||
""" storing images """
|
||||
"""storing images"""
|
||||
user = User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -423,7 +423,7 @@ class ActivitypubFields(TestCase):
|
|||
self.assertIsInstance(loaded_image[1], ContentFile)
|
||||
|
||||
def test_datetime_field(self):
|
||||
""" this one is pretty simple, it just has to use isoformat """
|
||||
"""this one is pretty simple, it just has to use isoformat"""
|
||||
instance = fields.DateTimeField()
|
||||
now = timezone.now()
|
||||
self.assertEqual(instance.field_to_activity(now), now.isoformat())
|
||||
|
@ -431,12 +431,12 @@ class ActivitypubFields(TestCase):
|
|||
self.assertEqual(instance.field_from_activity("bip"), None)
|
||||
|
||||
def test_array_field(self):
|
||||
""" idk why it makes them strings but probably for a good reason """
|
||||
"""idk why it makes them strings but probably for a good reason"""
|
||||
instance = fields.ArrayField(fields.IntegerField)
|
||||
self.assertEqual(instance.field_to_activity([0, 1]), ["0", "1"])
|
||||
|
||||
def test_html_field(self):
|
||||
""" sanitizes html, the sanitizer has its own tests """
|
||||
"""sanitizes html, the sanitizer has its own tests"""
|
||||
instance = fields.HtmlField()
|
||||
self.assertEqual(
|
||||
instance.field_from_activity("<marquee><p>hi</p></marquee>"), "<p>hi</p>"
|
||||
|
|
|
@ -14,10 +14,10 @@ from bookwyrm.connectors.abstract_connector import SearchResult
|
|||
|
||||
|
||||
class ImportJob(TestCase):
|
||||
""" this is a fancy one!!! """
|
||||
"""this is a fancy one!!!"""
|
||||
|
||||
def setUp(self):
|
||||
""" data is from a goodreads export of The Raven Tower """
|
||||
"""data is from a goodreads export of The Raven Tower"""
|
||||
read_data = {
|
||||
"Book Id": 39395857,
|
||||
"Title": "The Raven Tower",
|
||||
|
@ -72,30 +72,30 @@ class ImportJob(TestCase):
|
|||
)
|
||||
|
||||
def test_isbn(self):
|
||||
""" it unquotes the isbn13 field from data """
|
||||
"""it unquotes the isbn13 field from data"""
|
||||
expected = "9780356506999"
|
||||
item = models.ImportItem.objects.get(index=1)
|
||||
self.assertEqual(item.isbn, expected)
|
||||
|
||||
def test_shelf(self):
|
||||
""" converts to the local shelf typology """
|
||||
"""converts to the local shelf typology"""
|
||||
expected = "reading"
|
||||
self.assertEqual(self.item_1.shelf, expected)
|
||||
|
||||
def test_date_added(self):
|
||||
""" converts to the local shelf typology """
|
||||
"""converts to the local shelf typology"""
|
||||
expected = datetime.datetime(2019, 4, 9, 0, 0, tzinfo=timezone.utc)
|
||||
item = models.ImportItem.objects.get(index=1)
|
||||
self.assertEqual(item.date_added, expected)
|
||||
|
||||
def test_date_read(self):
|
||||
""" converts to the local shelf typology """
|
||||
"""converts to the local shelf typology"""
|
||||
expected = datetime.datetime(2019, 4, 12, 0, 0, tzinfo=timezone.utc)
|
||||
item = models.ImportItem.objects.get(index=2)
|
||||
self.assertEqual(item.date_read, expected)
|
||||
|
||||
def test_currently_reading_reads(self):
|
||||
""" infer currently reading dates where available """
|
||||
"""infer currently reading dates where available"""
|
||||
expected = [
|
||||
models.ReadThrough(
|
||||
start_date=datetime.datetime(2019, 4, 9, 0, 0, tzinfo=timezone.utc)
|
||||
|
@ -106,7 +106,7 @@ class ImportJob(TestCase):
|
|||
self.assertEqual(actual.reads[0].finish_date, expected[0].finish_date)
|
||||
|
||||
def test_read_reads(self):
|
||||
""" infer read dates where available """
|
||||
"""infer read dates where available"""
|
||||
actual = self.item_2
|
||||
self.assertEqual(
|
||||
actual.reads[0].start_date,
|
||||
|
@ -118,14 +118,14 @@ class ImportJob(TestCase):
|
|||
)
|
||||
|
||||
def test_unread_reads(self):
|
||||
""" handle books with no read dates """
|
||||
"""handle books with no read dates"""
|
||||
expected = []
|
||||
actual = models.ImportItem.objects.get(index=3)
|
||||
self.assertEqual(actual.reads, expected)
|
||||
|
||||
@responses.activate
|
||||
def test_get_book_from_isbn(self):
|
||||
""" search and load books by isbn (9780356506999) """
|
||||
"""search and load books by isbn (9780356506999)"""
|
||||
connector_info = models.Connector.objects.create(
|
||||
identifier="openlibrary.org",
|
||||
name="OpenLibrary",
|
||||
|
|
|
@ -7,10 +7,10 @@ from bookwyrm import models, settings
|
|||
|
||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||
class List(TestCase):
|
||||
""" some activitypub oddness ahead """
|
||||
"""some activitypub oddness ahead"""
|
||||
|
||||
def setUp(self):
|
||||
""" look, a list """
|
||||
"""look, a list"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -18,7 +18,7 @@ class List(TestCase):
|
|||
self.book = models.Edition.objects.create(title="hi", parent_work=work)
|
||||
|
||||
def test_remote_id(self, _):
|
||||
""" shelves use custom remote ids """
|
||||
"""shelves use custom remote ids"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
book_list = models.List.objects.create(
|
||||
name="Test List", user=self.local_user
|
||||
|
@ -27,7 +27,7 @@ class List(TestCase):
|
|||
self.assertEqual(book_list.get_remote_id(), expected_id)
|
||||
|
||||
def test_to_activity(self, _):
|
||||
""" jsonify it """
|
||||
"""jsonify it"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
book_list = models.List.objects.create(
|
||||
name="Test List", user=self.local_user
|
||||
|
@ -41,7 +41,7 @@ class List(TestCase):
|
|||
self.assertEqual(activity_json["owner"], self.local_user.remote_id)
|
||||
|
||||
def test_list_item(self, _):
|
||||
""" a list entry """
|
||||
"""a list entry"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
book_list = models.List.objects.create(
|
||||
name="Test List", user=self.local_user, privacy="unlisted"
|
||||
|
@ -59,7 +59,7 @@ class List(TestCase):
|
|||
self.assertEqual(item.recipients, [])
|
||||
|
||||
def test_list_item_pending(self, _):
|
||||
""" a list entry """
|
||||
"""a list entry"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
book_list = models.List.objects.create(
|
||||
name="Test List", user=self.local_user
|
||||
|
|
|
@ -6,10 +6,10 @@ from bookwyrm import models, settings
|
|||
|
||||
|
||||
class ReadThrough(TestCase):
|
||||
""" some activitypub oddness ahead """
|
||||
"""some activitypub oddness ahead"""
|
||||
|
||||
def setUp(self):
|
||||
""" look, a shelf """
|
||||
"""look, a shelf"""
|
||||
self.user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -27,7 +27,7 @@ class ReadThrough(TestCase):
|
|||
)
|
||||
|
||||
def test_progress_update(self):
|
||||
""" Test progress updates """
|
||||
"""Test progress updates"""
|
||||
self.readthrough.create_update() # No-op, no progress yet
|
||||
self.readthrough.progress = 10
|
||||
self.readthrough.create_update()
|
||||
|
|
|
@ -6,10 +6,10 @@ from bookwyrm import models
|
|||
|
||||
|
||||
class Relationship(TestCase):
|
||||
""" following, blocking, stuff like that """
|
||||
"""following, blocking, stuff like that"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need some users for this """
|
||||
"""we need some users for this"""
|
||||
with patch("bookwyrm.models.user.set_remote_server.delay"):
|
||||
self.remote_user = models.User.objects.create_user(
|
||||
"rat",
|
||||
|
@ -27,11 +27,11 @@ class Relationship(TestCase):
|
|||
self.local_user.save(broadcast=False)
|
||||
|
||||
def test_user_follows_from_request(self):
|
||||
""" convert a follow request into a follow """
|
||||
"""convert a follow request into a follow"""
|
||||
real_broadcast = models.UserFollowRequest.broadcast
|
||||
|
||||
def mock_broadcast(_, activity, user):
|
||||
""" introspect what's being sent out """
|
||||
"""introspect what's being sent out"""
|
||||
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
||||
self.assertEqual(activity["type"], "Follow")
|
||||
|
||||
|
@ -54,7 +54,7 @@ class Relationship(TestCase):
|
|||
models.UserFollowRequest.broadcast = real_broadcast
|
||||
|
||||
def test_user_follows_from_request_custom_remote_id(self):
|
||||
""" store a specific remote id for a relationship provided by remote """
|
||||
"""store a specific remote id for a relationship provided by remote"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
request = models.UserFollowRequest.objects.create(
|
||||
user_subject=self.local_user,
|
||||
|
@ -71,7 +71,7 @@ class Relationship(TestCase):
|
|||
self.assertEqual(rel.user_object, self.remote_user)
|
||||
|
||||
def test_follow_request_activity(self):
|
||||
""" accept a request and make it a relationship """
|
||||
"""accept a request and make it a relationship"""
|
||||
real_broadcast = models.UserFollowRequest.broadcast
|
||||
|
||||
def mock_broadcast(_, activity, user):
|
||||
|
@ -88,7 +88,7 @@ class Relationship(TestCase):
|
|||
models.UserFollowRequest.broadcast = real_broadcast
|
||||
|
||||
def test_follow_request_accept(self):
|
||||
""" accept a request and make it a relationship """
|
||||
"""accept a request and make it a relationship"""
|
||||
real_broadcast = models.UserFollowRequest.broadcast
|
||||
|
||||
def mock_broadcast(_, activity, user):
|
||||
|
@ -115,7 +115,7 @@ class Relationship(TestCase):
|
|||
models.UserFollowRequest.broadcast = real_broadcast
|
||||
|
||||
def test_follow_request_reject(self):
|
||||
""" accept a request and make it a relationship """
|
||||
"""accept a request and make it a relationship"""
|
||||
real_broadcast = models.UserFollowRequest.broadcast
|
||||
|
||||
def mock_reject(_, activity, user):
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm import models, settings
|
|||
|
||||
# pylint: disable=unused-argument
|
||||
class Shelf(TestCase):
|
||||
""" some activitypub oddness ahead """
|
||||
"""some activitypub oddness ahead"""
|
||||
|
||||
def setUp(self):
|
||||
""" look, a shelf """
|
||||
"""look, a shelf"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -19,7 +19,7 @@ class Shelf(TestCase):
|
|||
self.book = models.Edition.objects.create(title="test book", parent_work=work)
|
||||
|
||||
def test_remote_id(self):
|
||||
""" shelves use custom remote ids """
|
||||
"""shelves use custom remote ids"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
shelf = models.Shelf.objects.create(
|
||||
name="Test Shelf", identifier="test-shelf", user=self.local_user
|
||||
|
@ -28,7 +28,7 @@ class Shelf(TestCase):
|
|||
self.assertEqual(shelf.get_remote_id(), expected_id)
|
||||
|
||||
def test_to_activity(self):
|
||||
""" jsonify it """
|
||||
"""jsonify it"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
shelf = models.Shelf.objects.create(
|
||||
name="Test Shelf", identifier="test-shelf", user=self.local_user
|
||||
|
@ -42,7 +42,7 @@ class Shelf(TestCase):
|
|||
self.assertEqual(activity_json["owner"], self.local_user.remote_id)
|
||||
|
||||
def test_create_update_shelf(self):
|
||||
""" create and broadcast shelf creation """
|
||||
"""create and broadcast shelf creation"""
|
||||
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay") as mock:
|
||||
shelf = models.Shelf.objects.create(
|
||||
|
@ -63,7 +63,7 @@ class Shelf(TestCase):
|
|||
self.assertEqual(shelf.name, "arthur russel")
|
||||
|
||||
def test_shelve(self):
|
||||
""" create and broadcast shelf creation """
|
||||
"""create and broadcast shelf creation"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
shelf = models.Shelf.objects.create(
|
||||
name="Test Shelf", identifier="test-shelf", user=self.local_user
|
||||
|
|
|
@ -17,10 +17,10 @@ from bookwyrm import activitypub, models, settings
|
|||
@patch("bookwyrm.models.Status.broadcast")
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
class Status(TestCase):
|
||||
""" lotta types of statuses """
|
||||
"""lotta types of statuses"""
|
||||
|
||||
def setUp(self):
|
||||
""" useful things for creating a status """
|
||||
"""useful things for creating a status"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -46,14 +46,14 @@ class Status(TestCase):
|
|||
self.book.cover.save("test.jpg", ContentFile(output.getvalue()))
|
||||
|
||||
def test_status_generated_fields(self, *_):
|
||||
""" setting remote id """
|
||||
"""setting remote id"""
|
||||
status = models.Status.objects.create(content="bleh", user=self.local_user)
|
||||
expected_id = "https://%s/user/mouse/status/%d" % (settings.DOMAIN, status.id)
|
||||
self.assertEqual(status.remote_id, expected_id)
|
||||
self.assertEqual(status.privacy, "public")
|
||||
|
||||
def test_replies(self, *_):
|
||||
""" get a list of replies """
|
||||
"""get a list of replies"""
|
||||
parent = models.Status.objects.create(content="hi", user=self.local_user)
|
||||
child = models.Status.objects.create(
|
||||
content="hello", reply_parent=parent, user=self.local_user
|
||||
|
@ -72,7 +72,7 @@ class Status(TestCase):
|
|||
self.assertIsInstance(replies.last(), models.Review)
|
||||
|
||||
def test_status_type(self, *_):
|
||||
""" class name """
|
||||
"""class name"""
|
||||
self.assertEqual(models.Status().status_type, "Note")
|
||||
self.assertEqual(models.Review().status_type, "Review")
|
||||
self.assertEqual(models.Quotation().status_type, "Quotation")
|
||||
|
@ -80,14 +80,14 @@ class Status(TestCase):
|
|||
self.assertEqual(models.Boost().status_type, "Announce")
|
||||
|
||||
def test_boostable(self, *_):
|
||||
""" can a status be boosted, based on privacy """
|
||||
"""can a status be boosted, based on privacy"""
|
||||
self.assertTrue(models.Status(privacy="public").boostable)
|
||||
self.assertTrue(models.Status(privacy="unlisted").boostable)
|
||||
self.assertFalse(models.Status(privacy="followers").boostable)
|
||||
self.assertFalse(models.Status(privacy="direct").boostable)
|
||||
|
||||
def test_to_replies(self, *_):
|
||||
""" activitypub replies collection """
|
||||
"""activitypub replies collection"""
|
||||
parent = models.Status.objects.create(content="hi", user=self.local_user)
|
||||
child = models.Status.objects.create(
|
||||
content="hello", reply_parent=parent, user=self.local_user
|
||||
|
@ -104,7 +104,7 @@ class Status(TestCase):
|
|||
self.assertEqual(replies["totalItems"], 2)
|
||||
|
||||
def test_status_to_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.Status.objects.create(
|
||||
content="test content", user=self.local_user
|
||||
)
|
||||
|
@ -115,7 +115,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["sensitive"], False)
|
||||
|
||||
def test_status_to_activity_tombstone(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
with patch(
|
||||
"bookwyrm.activitystreams.ActivityStream.remove_object_from_related_stores"
|
||||
):
|
||||
|
@ -131,7 +131,7 @@ class Status(TestCase):
|
|||
self.assertFalse(hasattr(activity, "content"))
|
||||
|
||||
def test_status_to_pure_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.Status.objects.create(
|
||||
content="test content", user=self.local_user
|
||||
)
|
||||
|
@ -143,7 +143,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["attachment"], [])
|
||||
|
||||
def test_generated_note_to_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.GeneratedNote.objects.create(
|
||||
content="test content", user=self.local_user
|
||||
)
|
||||
|
@ -157,7 +157,7 @@ class Status(TestCase):
|
|||
self.assertEqual(len(activity["tag"]), 2)
|
||||
|
||||
def test_generated_note_to_pure_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.GeneratedNote.objects.create(
|
||||
content="test content", user=self.local_user
|
||||
)
|
||||
|
@ -181,7 +181,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
|
||||
def test_comment_to_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.Comment.objects.create(
|
||||
content="test content", user=self.local_user, book=self.book
|
||||
)
|
||||
|
@ -192,7 +192,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["inReplyToBook"], self.book.remote_id)
|
||||
|
||||
def test_comment_to_pure_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.Comment.objects.create(
|
||||
content="test content", user=self.local_user, book=self.book
|
||||
)
|
||||
|
@ -212,7 +212,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
|
||||
def test_quotation_to_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.Quotation.objects.create(
|
||||
quote="a sickening sense",
|
||||
content="test content",
|
||||
|
@ -227,7 +227,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["inReplyToBook"], self.book.remote_id)
|
||||
|
||||
def test_quotation_to_pure_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.Quotation.objects.create(
|
||||
quote="a sickening sense",
|
||||
content="test content",
|
||||
|
@ -250,7 +250,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
|
||||
def test_review_to_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.Review.objects.create(
|
||||
name="Review name",
|
||||
content="test content",
|
||||
|
@ -267,7 +267,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["inReplyToBook"], self.book.remote_id)
|
||||
|
||||
def test_review_to_pure_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.Review.objects.create(
|
||||
name="Review's name",
|
||||
content="test content",
|
||||
|
@ -291,7 +291,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
|
||||
def test_review_to_pure_activity_no_rating(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.Review.objects.create(
|
||||
name="Review name",
|
||||
content="test content",
|
||||
|
@ -313,7 +313,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
|
||||
def test_reviewrating_to_pure_activity(self, *_):
|
||||
""" subclass of the base model version with a "pure" serializer """
|
||||
"""subclass of the base model version with a "pure" serializer"""
|
||||
status = models.ReviewRating.objects.create(
|
||||
rating=3.0,
|
||||
user=self.local_user,
|
||||
|
@ -335,11 +335,11 @@ class Status(TestCase):
|
|||
self.assertEqual(activity["attachment"][0].name, "Test Edition")
|
||||
|
||||
def test_favorite(self, *_):
|
||||
""" fav a status """
|
||||
"""fav a status"""
|
||||
real_broadcast = models.Favorite.broadcast
|
||||
|
||||
def fav_broadcast_mock(_, activity, user):
|
||||
""" ok """
|
||||
"""ok"""
|
||||
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
||||
self.assertEqual(activity["type"], "Like")
|
||||
|
||||
|
@ -361,7 +361,7 @@ class Status(TestCase):
|
|||
models.Favorite.broadcast = real_broadcast
|
||||
|
||||
def test_boost(self, *_):
|
||||
""" boosting, this one's a bit fussy """
|
||||
"""boosting, this one's a bit fussy"""
|
||||
status = models.Status.objects.create(
|
||||
content="test content", user=self.local_user
|
||||
)
|
||||
|
@ -373,7 +373,7 @@ class Status(TestCase):
|
|||
self.assertEqual(activity, boost.to_activity(pure=True))
|
||||
|
||||
def test_notification(self, *_):
|
||||
""" a simple model """
|
||||
"""a simple model"""
|
||||
notification = models.Notification.objects.create(
|
||||
user=self.local_user, notification_type="FAVORITE"
|
||||
)
|
||||
|
@ -385,7 +385,7 @@ class Status(TestCase):
|
|||
)
|
||||
|
||||
def test_create_broadcast(self, _, broadcast_mock):
|
||||
""" should send out two verions of a status on create """
|
||||
"""should send out two verions of a status on create"""
|
||||
models.Comment.objects.create(
|
||||
content="hi", user=self.local_user, book=self.book
|
||||
)
|
||||
|
@ -405,7 +405,7 @@ class Status(TestCase):
|
|||
self.assertEqual(args["object"]["type"], "Comment")
|
||||
|
||||
def test_recipients_with_mentions(self, *_):
|
||||
""" get recipients to broadcast a status """
|
||||
"""get recipients to broadcast a status"""
|
||||
status = models.GeneratedNote.objects.create(
|
||||
content="test content", user=self.local_user
|
||||
)
|
||||
|
@ -414,7 +414,7 @@ class Status(TestCase):
|
|||
self.assertEqual(status.recipients, [self.remote_user])
|
||||
|
||||
def test_recipients_with_reply_parent(self, *_):
|
||||
""" get recipients to broadcast a status """
|
||||
"""get recipients to broadcast a status"""
|
||||
parent_status = models.GeneratedNote.objects.create(
|
||||
content="test content", user=self.remote_user
|
||||
)
|
||||
|
@ -425,7 +425,7 @@ class Status(TestCase):
|
|||
self.assertEqual(status.recipients, [self.remote_user])
|
||||
|
||||
def test_recipients_with_reply_parent_and_mentions(self, *_):
|
||||
""" get recipients to broadcast a status """
|
||||
"""get recipients to broadcast a status"""
|
||||
parent_status = models.GeneratedNote.objects.create(
|
||||
content="test content", user=self.remote_user
|
||||
)
|
||||
|
@ -438,7 +438,7 @@ class Status(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_ignore_activity_boost(self, *_):
|
||||
""" don't bother with most remote statuses """
|
||||
"""don't bother with most remote statuses"""
|
||||
activity = activitypub.Announce(
|
||||
id="http://www.faraway.com/boost/12",
|
||||
actor=self.remote_user.remote_id,
|
||||
|
|
|
@ -22,7 +22,7 @@ class User(TestCase):
|
|||
)
|
||||
|
||||
def test_computed_fields(self):
|
||||
""" username instead of id here """
|
||||
"""username instead of id here"""
|
||||
expected_id = "https://%s/user/mouse" % DOMAIN
|
||||
self.assertEqual(self.user.remote_id, expected_id)
|
||||
self.assertEqual(self.user.username, "mouse@%s" % DOMAIN)
|
||||
|
@ -155,7 +155,7 @@ class User(TestCase):
|
|||
self.assertIsNone(server.application_version)
|
||||
|
||||
def test_delete_user(self):
|
||||
""" deactivate a user """
|
||||
"""deactivate a user"""
|
||||
self.assertTrue(self.user.is_active)
|
||||
with patch(
|
||||
"bookwyrm.models.activitypub_mixin.broadcast_task.delay"
|
||||
|
|
|
@ -7,10 +7,10 @@ from bookwyrm import activitystreams, models
|
|||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
class Activitystreams(TestCase):
|
||||
""" using redis to build activity streams """
|
||||
"""using redis to build activity streams"""
|
||||
|
||||
def setUp(self):
|
||||
""" use a test csv """
|
||||
"""use a test csv"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse", "mouse@mouse.mouse", "password", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -30,14 +30,14 @@ class Activitystreams(TestCase):
|
|||
self.book = models.Edition.objects.create(title="test book")
|
||||
|
||||
class TestStream(activitystreams.ActivityStream):
|
||||
""" test stream, don't have to do anything here """
|
||||
"""test stream, don't have to do anything here"""
|
||||
|
||||
key = "test"
|
||||
|
||||
self.test_stream = TestStream()
|
||||
|
||||
def test_activitystream_class_ids(self, *_):
|
||||
""" the abstract base class for stream objects """
|
||||
"""the abstract base class for stream objects"""
|
||||
self.assertEqual(
|
||||
self.test_stream.stream_id(self.local_user),
|
||||
"{}-test".format(self.local_user.id),
|
||||
|
@ -48,7 +48,7 @@ class Activitystreams(TestCase):
|
|||
)
|
||||
|
||||
def test_abstractstream_get_audience(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user, content="hi", privacy="public"
|
||||
)
|
||||
|
@ -59,7 +59,7 @@ class Activitystreams(TestCase):
|
|||
self.assertTrue(self.another_user in users)
|
||||
|
||||
def test_abstractstream_get_audience_direct(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user,
|
||||
content="hi",
|
||||
|
@ -82,7 +82,7 @@ class Activitystreams(TestCase):
|
|||
self.assertFalse(self.remote_user in users)
|
||||
|
||||
def test_abstractstream_get_audience_followers_remote_user(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user,
|
||||
content="hi",
|
||||
|
@ -92,7 +92,7 @@ class Activitystreams(TestCase):
|
|||
self.assertFalse(users.exists())
|
||||
|
||||
def test_abstractstream_get_audience_followers_self(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Comment.objects.create(
|
||||
user=self.local_user,
|
||||
content="hi",
|
||||
|
@ -105,7 +105,7 @@ class Activitystreams(TestCase):
|
|||
self.assertFalse(self.remote_user in users)
|
||||
|
||||
def test_abstractstream_get_audience_followers_with_mention(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Comment.objects.create(
|
||||
user=self.remote_user,
|
||||
content="hi",
|
||||
|
@ -120,7 +120,7 @@ class Activitystreams(TestCase):
|
|||
self.assertFalse(self.remote_user in users)
|
||||
|
||||
def test_abstractstream_get_audience_followers_with_relationship(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
self.remote_user.followers.add(self.local_user)
|
||||
status = models.Comment.objects.create(
|
||||
user=self.remote_user,
|
||||
|
@ -134,7 +134,7 @@ class Activitystreams(TestCase):
|
|||
self.assertFalse(self.remote_user in users)
|
||||
|
||||
def test_homestream_get_audience(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user, content="hi", privacy="public"
|
||||
)
|
||||
|
@ -142,7 +142,7 @@ class Activitystreams(TestCase):
|
|||
self.assertFalse(users.exists())
|
||||
|
||||
def test_homestream_get_audience_with_mentions(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user, content="hi", privacy="public"
|
||||
)
|
||||
|
@ -152,7 +152,7 @@ class Activitystreams(TestCase):
|
|||
self.assertFalse(self.another_user in users)
|
||||
|
||||
def test_homestream_get_audience_with_relationship(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
self.remote_user.followers.add(self.local_user)
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user, content="hi", privacy="public"
|
||||
|
@ -162,7 +162,7 @@ class Activitystreams(TestCase):
|
|||
self.assertFalse(self.another_user in users)
|
||||
|
||||
def test_localstream_get_audience_remote_status(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user, content="hi", privacy="public"
|
||||
)
|
||||
|
@ -170,7 +170,7 @@ class Activitystreams(TestCase):
|
|||
self.assertEqual(users, [])
|
||||
|
||||
def test_localstream_get_audience_local_status(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.local_user, content="hi", privacy="public"
|
||||
)
|
||||
|
@ -179,7 +179,7 @@ class Activitystreams(TestCase):
|
|||
self.assertTrue(self.another_user in users)
|
||||
|
||||
def test_localstream_get_audience_unlisted(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.local_user, content="hi", privacy="unlisted"
|
||||
)
|
||||
|
@ -187,7 +187,7 @@ class Activitystreams(TestCase):
|
|||
self.assertEqual(users, [])
|
||||
|
||||
def test_federatedstream_get_audience(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user, content="hi", privacy="public"
|
||||
)
|
||||
|
@ -196,7 +196,7 @@ class Activitystreams(TestCase):
|
|||
self.assertTrue(self.another_user in users)
|
||||
|
||||
def test_federatedstream_get_audience_unlisted(self, *_):
|
||||
""" get a list of users that should see a status """
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user, content="hi", privacy="unlisted"
|
||||
)
|
||||
|
|
|
@ -10,10 +10,10 @@ from bookwyrm import emailing, models
|
|||
|
||||
@patch("bookwyrm.emailing.send_email.delay")
|
||||
class Emailing(TestCase):
|
||||
""" every response to a get request, html or json """
|
||||
"""every response to a get request, html or json"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -25,7 +25,7 @@ class Emailing(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_invite_email(self, email_mock):
|
||||
""" load the invite email """
|
||||
"""load the invite email"""
|
||||
invite_request = models.InviteRequest.objects.create(
|
||||
email="test@email.com",
|
||||
invite=models.SiteInvite.objects.create(user=self.local_user),
|
||||
|
@ -40,7 +40,7 @@ class Emailing(TestCase):
|
|||
self.assertEqual(len(args), 4)
|
||||
|
||||
def test_password_reset_email(self, email_mock):
|
||||
""" load the password reset email """
|
||||
"""load the password reset email"""
|
||||
reset = models.PasswordReset.objects.create(user=self.local_user)
|
||||
emailing.password_reset_email(reset)
|
||||
|
||||
|
|
|
@ -5,10 +5,10 @@ from bookwyrm.sanitize_html import InputHtmlParser
|
|||
|
||||
|
||||
class Sanitizer(TestCase):
|
||||
""" sanitizer tests """
|
||||
"""sanitizer tests"""
|
||||
|
||||
def test_no_html(self):
|
||||
""" just text """
|
||||
"""just text"""
|
||||
input_text = "no html "
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
|
@ -16,7 +16,7 @@ class Sanitizer(TestCase):
|
|||
self.assertEqual(input_text, output)
|
||||
|
||||
def test_valid_html(self):
|
||||
""" leave the html untouched """
|
||||
"""leave the html untouched"""
|
||||
input_text = "<b>yes </b> <i>html</i>"
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
|
@ -24,7 +24,7 @@ class Sanitizer(TestCase):
|
|||
self.assertEqual(input_text, output)
|
||||
|
||||
def test_valid_html_attrs(self):
|
||||
""" and don't remove attributes """
|
||||
"""and don't remove attributes"""
|
||||
input_text = '<a href="fish.com">yes </a> <i>html</i>'
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
|
@ -32,7 +32,7 @@ class Sanitizer(TestCase):
|
|||
self.assertEqual(input_text, output)
|
||||
|
||||
def test_invalid_html(self):
|
||||
""" remove all html when the html is malformed """
|
||||
"""remove all html when the html is malformed"""
|
||||
input_text = "<b>yes <i>html</i>"
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
|
@ -46,7 +46,7 @@ class Sanitizer(TestCase):
|
|||
self.assertEqual("yes html ", output)
|
||||
|
||||
def test_disallowed_html(self):
|
||||
""" remove disallowed html but keep allowed html """
|
||||
"""remove disallowed html but keep allowed html"""
|
||||
input_text = "<div> yes <i>html</i></div>"
|
||||
parser = InputHtmlParser()
|
||||
parser.feed(input_text)
|
||||
|
|
|
@ -20,7 +20,7 @@ from bookwyrm.signatures import create_key_pair, make_signature, make_digest
|
|||
|
||||
|
||||
def get_follow_activity(follower, followee):
|
||||
""" generates a test activity """
|
||||
"""generates a test activity"""
|
||||
return Follow(
|
||||
id="https://test.com/user/follow/id",
|
||||
actor=follower.remote_id,
|
||||
|
@ -33,10 +33,10 @@ Sender = namedtuple("Sender", ("remote_id", "key_pair"))
|
|||
|
||||
|
||||
class Signature(TestCase):
|
||||
""" signature test """
|
||||
"""signature test"""
|
||||
|
||||
def setUp(self):
|
||||
""" create users and test data """
|
||||
"""create users and test data"""
|
||||
self.mouse = models.User.objects.create_user(
|
||||
"mouse@%s" % DOMAIN, "mouse@example.com", "", local=True, localname="mouse"
|
||||
)
|
||||
|
@ -56,7 +56,7 @@ class Signature(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def send(self, signature, now, data, digest):
|
||||
""" test request """
|
||||
"""test request"""
|
||||
c = Client()
|
||||
return c.post(
|
||||
urlsplit(self.rat.inbox).path,
|
||||
|
@ -74,7 +74,7 @@ class Signature(TestCase):
|
|||
def send_test_request( # pylint: disable=too-many-arguments
|
||||
self, sender, signer=None, send_data=None, digest=None, date=None
|
||||
):
|
||||
""" sends a follow request to the "rat" user """
|
||||
"""sends a follow request to the "rat" user"""
|
||||
now = date or http_date()
|
||||
data = json.dumps(get_follow_activity(sender, self.rat))
|
||||
digest = digest or make_digest(data)
|
||||
|
@ -84,7 +84,7 @@ class Signature(TestCase):
|
|||
return self.send(signature, now, send_data or data, digest)
|
||||
|
||||
def test_correct_signature(self):
|
||||
""" this one should just work """
|
||||
"""this one should just work"""
|
||||
response = self.send_test_request(sender=self.mouse)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
@ -96,7 +96,7 @@ class Signature(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_remote_signer(self):
|
||||
""" signtures for remote users """
|
||||
"""signtures for remote users"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("data/ap_user.json")
|
||||
data = json.loads(datafile.read_bytes())
|
||||
data["id"] = self.fake_remote.remote_id
|
||||
|
@ -119,7 +119,7 @@ class Signature(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_key_needs_refresh(self):
|
||||
""" an out of date key should be updated and the new key work """
|
||||
"""an out of date key should be updated and the new key work"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("data/ap_user.json")
|
||||
data = json.loads(datafile.read_bytes())
|
||||
data["id"] = self.fake_remote.remote_id
|
||||
|
@ -155,7 +155,7 @@ class Signature(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_nonexistent_signer(self):
|
||||
""" fail when unable to look up signer """
|
||||
"""fail when unable to look up signer"""
|
||||
responses.add(
|
||||
responses.GET,
|
||||
self.fake_remote.remote_id,
|
||||
|
@ -177,7 +177,7 @@ class Signature(TestCase):
|
|||
|
||||
@pytest.mark.integration
|
||||
def test_invalid_digest(self):
|
||||
""" signature digest must be valid """
|
||||
"""signature digest must be valid"""
|
||||
with patch("bookwyrm.activitypub.resolve_remote_id"):
|
||||
response = self.send_test_request(
|
||||
self.mouse, digest="SHA-256=AAAAAAAAAAAAAAAAAA"
|
||||
|
|
|
@ -12,10 +12,10 @@ from bookwyrm.templatetags import bookwyrm_tags
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
class TemplateTags(TestCase):
|
||||
""" lotta different things here """
|
||||
"""lotta different things here"""
|
||||
|
||||
def setUp(self):
|
||||
""" create some filler objects """
|
||||
"""create some filler objects"""
|
||||
self.user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.mouse",
|
||||
|
@ -34,34 +34,34 @@ class TemplateTags(TestCase):
|
|||
self.book = models.Edition.objects.create(title="Test Book")
|
||||
|
||||
def test_dict_key(self, _):
|
||||
""" just getting a value out of a dict """
|
||||
"""just getting a value out of a dict"""
|
||||
test_dict = {"a": 1, "b": 3}
|
||||
self.assertEqual(bookwyrm_tags.dict_key(test_dict, "a"), 1)
|
||||
self.assertEqual(bookwyrm_tags.dict_key(test_dict, "c"), 0)
|
||||
|
||||
def test_get_user_rating(self, _):
|
||||
""" get a user's most recent rating of a book """
|
||||
"""get a user's most recent rating of a book"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
models.Review.objects.create(user=self.user, book=self.book, rating=3)
|
||||
self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 3)
|
||||
|
||||
def test_get_user_rating_doesnt_exist(self, _):
|
||||
""" there is no rating available """
|
||||
"""there is no rating available"""
|
||||
self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 0)
|
||||
|
||||
def test_get_user_identifer_local(self, _):
|
||||
""" fall back to the simplest uid available """
|
||||
"""fall back to the simplest uid available"""
|
||||
self.assertNotEqual(self.user.username, self.user.localname)
|
||||
self.assertEqual(bookwyrm_tags.get_user_identifier(self.user), "mouse")
|
||||
|
||||
def test_get_user_identifer_remote(self, _):
|
||||
""" for a remote user, should be their full username """
|
||||
"""for a remote user, should be their full username"""
|
||||
self.assertEqual(
|
||||
bookwyrm_tags.get_user_identifier(self.remote_user), "rat@example.com"
|
||||
)
|
||||
|
||||
def test_get_notification_count(self, _):
|
||||
""" just countin' """
|
||||
"""just countin'"""
|
||||
self.assertEqual(bookwyrm_tags.get_notification_count(self.user), 0)
|
||||
|
||||
models.Notification.objects.create(user=self.user, notification_type="FAVORITE")
|
||||
|
@ -74,7 +74,7 @@ class TemplateTags(TestCase):
|
|||
self.assertEqual(bookwyrm_tags.get_notification_count(self.user), 2)
|
||||
|
||||
def test_get_replies(self, _):
|
||||
""" direct replies to a status """
|
||||
"""direct replies to a status"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
parent = models.Review.objects.create(
|
||||
user=self.user, book=self.book, content="hi"
|
||||
|
@ -102,7 +102,7 @@ class TemplateTags(TestCase):
|
|||
self.assertFalse(third_child in replies)
|
||||
|
||||
def test_get_parent(self, _):
|
||||
""" get the reply parent of a status """
|
||||
"""get the reply parent of a status"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
parent = models.Review.objects.create(
|
||||
user=self.user, book=self.book, content="hi"
|
||||
|
@ -116,7 +116,7 @@ class TemplateTags(TestCase):
|
|||
self.assertIsInstance(result, models.Review)
|
||||
|
||||
def test_get_user_liked(self, _):
|
||||
""" did a user like a status """
|
||||
"""did a user like a status"""
|
||||
status = models.Review.objects.create(user=self.remote_user, book=self.book)
|
||||
|
||||
self.assertFalse(bookwyrm_tags.get_user_liked(self.user, status))
|
||||
|
@ -125,7 +125,7 @@ class TemplateTags(TestCase):
|
|||
self.assertTrue(bookwyrm_tags.get_user_liked(self.user, status))
|
||||
|
||||
def test_get_user_boosted(self, _):
|
||||
""" did a user boost a status """
|
||||
"""did a user boost a status"""
|
||||
status = models.Review.objects.create(user=self.remote_user, book=self.book)
|
||||
|
||||
self.assertFalse(bookwyrm_tags.get_user_boosted(self.user, status))
|
||||
|
@ -134,7 +134,7 @@ class TemplateTags(TestCase):
|
|||
self.assertTrue(bookwyrm_tags.get_user_boosted(self.user, status))
|
||||
|
||||
def test_follow_request_exists(self, _):
|
||||
""" does a user want to follow """
|
||||
"""does a user want to follow"""
|
||||
self.assertFalse(
|
||||
bookwyrm_tags.follow_request_exists(self.user, self.remote_user)
|
||||
)
|
||||
|
@ -152,7 +152,7 @@ class TemplateTags(TestCase):
|
|||
)
|
||||
|
||||
def test_get_boosted(self, _):
|
||||
""" load a boosted status """
|
||||
"""load a boosted status"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
status = models.Review.objects.create(user=self.remote_user, book=self.book)
|
||||
boost = models.Boost.objects.create(user=self.user, boosted_status=status)
|
||||
|
@ -161,7 +161,7 @@ class TemplateTags(TestCase):
|
|||
self.assertEqual(boosted, status)
|
||||
|
||||
def test_get_book_description(self, _):
|
||||
""" grab it from the edition or the parent """
|
||||
"""grab it from the edition or the parent"""
|
||||
work = models.Work.objects.create(title="Test Work")
|
||||
self.book.parent_work = work
|
||||
self.book.save()
|
||||
|
@ -177,12 +177,12 @@ class TemplateTags(TestCase):
|
|||
self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hello")
|
||||
|
||||
def test_get_uuid(self, _):
|
||||
""" uuid functionality """
|
||||
"""uuid functionality"""
|
||||
uuid = bookwyrm_tags.get_uuid("hi")
|
||||
self.assertTrue(re.match(r"hi[A-Za-z0-9\-]", uuid))
|
||||
|
||||
def test_get_markdown(self, _):
|
||||
""" mardown format data """
|
||||
"""mardown format data"""
|
||||
result = bookwyrm_tags.get_markdown("_hi_")
|
||||
self.assertEqual(result, "<p><em>hi</em></p>")
|
||||
|
||||
|
@ -190,13 +190,13 @@ class TemplateTags(TestCase):
|
|||
self.assertEqual(result, "<p><em>hi</em></p>")
|
||||
|
||||
def test_get_mentions(self, _):
|
||||
""" list of people mentioned """
|
||||
"""list of people mentioned"""
|
||||
status = models.Status.objects.create(content="hi", user=self.remote_user)
|
||||
result = bookwyrm_tags.get_mentions(status, self.user)
|
||||
self.assertEqual(result, "@rat@example.com ")
|
||||
|
||||
def test_get_status_preview_name(self, _):
|
||||
""" status context string """
|
||||
"""status context string"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
status = models.Status.objects.create(content="hi", user=self.user)
|
||||
result = bookwyrm_tags.get_status_preview_name(status)
|
||||
|
@ -221,7 +221,7 @@ class TemplateTags(TestCase):
|
|||
self.assertEqual(result, "quotation from <em>Test Book</em>")
|
||||
|
||||
def test_related_status(self, _):
|
||||
""" gets the subclass model for a notification status """
|
||||
"""gets the subclass model for a notification status"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
status = models.Status.objects.create(content="hi", user=self.user)
|
||||
notification = models.Notification.objects.create(
|
||||
|
|
|
@ -12,10 +12,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class Inbox(TestCase):
|
||||
""" readthrough tests """
|
||||
"""readthrough tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.client = Client()
|
||||
self.factory = RequestFactory()
|
||||
local_user = models.User.objects.create_user(
|
||||
|
@ -48,12 +48,12 @@ class Inbox(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_inbox_invalid_get(self):
|
||||
""" shouldn't try to handle if the user is not found """
|
||||
"""shouldn't try to handle if the user is not found"""
|
||||
result = self.client.get("/inbox", content_type="application/json")
|
||||
self.assertIsInstance(result, HttpResponseNotAllowed)
|
||||
|
||||
def test_inbox_invalid_user(self):
|
||||
""" shouldn't try to handle if the user is not found """
|
||||
"""shouldn't try to handle if the user is not found"""
|
||||
result = self.client.post(
|
||||
"/user/bleh/inbox",
|
||||
'{"type": "Test", "object": "exists"}',
|
||||
|
@ -62,7 +62,7 @@ class Inbox(TestCase):
|
|||
self.assertIsInstance(result, HttpResponseNotFound)
|
||||
|
||||
def test_inbox_invalid_bad_signature(self):
|
||||
""" bad request for invalid signature """
|
||||
"""bad request for invalid signature"""
|
||||
with patch("bookwyrm.views.inbox.has_valid_signature") as mock_valid:
|
||||
mock_valid.return_value = False
|
||||
result = self.client.post(
|
||||
|
@ -73,7 +73,7 @@ class Inbox(TestCase):
|
|||
self.assertEqual(result.status_code, 401)
|
||||
|
||||
def test_inbox_invalid_bad_signature_delete(self):
|
||||
""" invalid signature for Delete is okay though """
|
||||
"""invalid signature for Delete is okay though"""
|
||||
with patch("bookwyrm.views.inbox.has_valid_signature") as mock_valid:
|
||||
mock_valid.return_value = False
|
||||
result = self.client.post(
|
||||
|
@ -84,7 +84,7 @@ class Inbox(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_inbox_unknown_type(self):
|
||||
""" never heard of that activity type, don't have a handler for it """
|
||||
"""never heard of that activity type, don't have a handler for it"""
|
||||
with patch("bookwyrm.views.inbox.has_valid_signature") as mock_valid:
|
||||
result = self.client.post(
|
||||
"/inbox",
|
||||
|
@ -95,7 +95,7 @@ class Inbox(TestCase):
|
|||
self.assertIsInstance(result, HttpResponseNotFound)
|
||||
|
||||
def test_inbox_success(self):
|
||||
""" a known type, for which we start a task """
|
||||
"""a known type, for which we start a task"""
|
||||
activity = self.create_json
|
||||
activity["object"] = {
|
||||
"id": "https://example.com/list/22",
|
||||
|
@ -121,7 +121,7 @@ class Inbox(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_is_blocked_user_agent(self):
|
||||
""" check for blocked servers """
|
||||
"""check for blocked servers"""
|
||||
request = self.factory.post(
|
||||
"",
|
||||
HTTP_USER_AGENT="http.rb/4.4.1 (Mastodon/3.3.0; +https://mastodon.social/)",
|
||||
|
@ -134,7 +134,7 @@ class Inbox(TestCase):
|
|||
self.assertTrue(views.inbox.is_blocked_user_agent(request))
|
||||
|
||||
def test_is_blocked_activity(self):
|
||||
""" check for blocked servers """
|
||||
"""check for blocked servers"""
|
||||
activity = {"actor": "https://mastodon.social/user/whaatever/else"}
|
||||
self.assertFalse(views.inbox.is_blocked_activity(activity))
|
||||
|
||||
|
@ -144,7 +144,7 @@ class Inbox(TestCase):
|
|||
self.assertTrue(views.inbox.is_blocked_activity(activity))
|
||||
|
||||
def test_create_by_deactivated_user(self):
|
||||
""" don't let deactivated users post """
|
||||
"""don't let deactivated users post"""
|
||||
self.remote_user.delete(broadcast=False)
|
||||
self.assertTrue(self.remote_user.deleted)
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../../data/ap_note.json")
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class InboxAdd(TestCase):
|
||||
""" inbox tests """
|
||||
"""inbox tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
local_user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.com",
|
||||
|
@ -42,7 +42,7 @@ class InboxAdd(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_handle_add_book_to_shelf(self):
|
||||
""" shelving a book """
|
||||
"""shelving a book"""
|
||||
shelf = models.Shelf.objects.create(user=self.remote_user, name="Test Shelf")
|
||||
shelf.remote_id = "https://bookwyrm.social/user/mouse/shelf/to-read"
|
||||
shelf.save()
|
||||
|
@ -65,7 +65,7 @@ class InboxAdd(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_handle_add_book_to_list(self):
|
||||
""" listing a book """
|
||||
"""listing a book"""
|
||||
responses.add(
|
||||
responses.GET,
|
||||
"https://bookwyrm.social/user/mouse/list/to-read",
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class InboxActivities(TestCase):
|
||||
""" inbox tests """
|
||||
"""inbox tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.com",
|
||||
|
@ -52,7 +52,7 @@ class InboxActivities(TestCase):
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
def test_boost(self, redis_mock):
|
||||
""" boost a status """
|
||||
"""boost a status"""
|
||||
self.assertEqual(models.Notification.objects.count(), 0)
|
||||
activity = {
|
||||
"type": "Announce",
|
||||
|
@ -82,7 +82,7 @@ class InboxActivities(TestCase):
|
|||
@responses.activate
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
def test_boost_remote_status(self, redis_mock):
|
||||
""" boost a status from a remote server """
|
||||
"""boost a status from a remote server"""
|
||||
work = models.Work.objects.create(title="work title")
|
||||
book = models.Edition.objects.create(
|
||||
title="Test",
|
||||
|
@ -131,7 +131,7 @@ class InboxActivities(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_discarded_boost(self):
|
||||
""" test a boost of a mastodon status that will be discarded """
|
||||
"""test a boost of a mastodon status that will be discarded"""
|
||||
status = models.Status(
|
||||
content="hi",
|
||||
user=self.remote_user,
|
||||
|
@ -154,7 +154,7 @@ class InboxActivities(TestCase):
|
|||
self.assertEqual(models.Boost.objects.count(), 0)
|
||||
|
||||
def test_unboost(self):
|
||||
""" undo a boost """
|
||||
"""undo a boost"""
|
||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||
boost = models.Boost.objects.create(
|
||||
boosted_status=self.status, user=self.remote_user
|
||||
|
@ -183,7 +183,7 @@ class InboxActivities(TestCase):
|
|||
self.assertFalse(models.Boost.objects.exists())
|
||||
|
||||
def test_unboost_unknown_boost(self):
|
||||
""" undo a boost """
|
||||
"""undo a boost"""
|
||||
activity = {
|
||||
"type": "Undo",
|
||||
"actor": "hi",
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class InboxBlock(TestCase):
|
||||
""" inbox tests """
|
||||
"""inbox tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.com",
|
||||
|
@ -35,7 +35,7 @@ class InboxBlock(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_handle_blocks(self):
|
||||
""" create a "block" database entry from an activity """
|
||||
"""create a "block" database entry from an activity"""
|
||||
self.local_user.followers.add(self.remote_user)
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
models.UserFollowRequest.objects.create(
|
||||
|
@ -67,7 +67,7 @@ class InboxBlock(TestCase):
|
|||
self.assertFalse(models.UserFollowRequest.objects.exists())
|
||||
|
||||
def test_handle_unblock(self):
|
||||
""" unblock a user """
|
||||
"""unblock a user"""
|
||||
self.remote_user.blocks.add(self.local_user)
|
||||
|
||||
block = models.UserBlocks.objects.get()
|
||||
|
|
|
@ -11,10 +11,10 @@ from bookwyrm.activitypub import ActivitySerializerError
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class InboxCreate(TestCase):
|
||||
""" readthrough tests """
|
||||
"""readthrough tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.com",
|
||||
|
@ -53,7 +53,7 @@ class InboxCreate(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_create_status(self):
|
||||
""" the "it justs works" mode """
|
||||
"""the "it justs works" mode"""
|
||||
self.assertEqual(models.Status.objects.count(), 1)
|
||||
|
||||
datafile = pathlib.Path(__file__).parent.joinpath(
|
||||
|
@ -84,7 +84,7 @@ class InboxCreate(TestCase):
|
|||
self.assertEqual(models.Status.objects.count(), 2)
|
||||
|
||||
def test_create_status_remote_note_with_mention(self):
|
||||
""" should only create it under the right circumstances """
|
||||
"""should only create it under the right circumstances"""
|
||||
self.assertEqual(models.Status.objects.count(), 1)
|
||||
self.assertFalse(
|
||||
models.Notification.objects.filter(user=self.local_user).exists()
|
||||
|
@ -107,7 +107,7 @@ class InboxCreate(TestCase):
|
|||
self.assertEqual(models.Notification.objects.get().notification_type, "MENTION")
|
||||
|
||||
def test_create_status_remote_note_with_reply(self):
|
||||
""" should only create it under the right circumstances """
|
||||
"""should only create it under the right circumstances"""
|
||||
self.assertEqual(models.Status.objects.count(), 1)
|
||||
self.assertFalse(models.Notification.objects.filter(user=self.local_user))
|
||||
|
||||
|
@ -128,7 +128,7 @@ class InboxCreate(TestCase):
|
|||
self.assertEqual(models.Notification.objects.get().notification_type, "REPLY")
|
||||
|
||||
def test_create_list(self):
|
||||
""" a new list """
|
||||
"""a new list"""
|
||||
activity = self.create_json
|
||||
activity["object"] = {
|
||||
"id": "https://example.com/list/22",
|
||||
|
@ -152,7 +152,7 @@ class InboxCreate(TestCase):
|
|||
self.assertEqual(book_list.remote_id, "https://example.com/list/22")
|
||||
|
||||
def test_create_unsupported_type(self):
|
||||
""" ignore activities we know we can't handle """
|
||||
"""ignore activities we know we can't handle"""
|
||||
activity = self.create_json
|
||||
activity["object"] = {
|
||||
"id": "https://example.com/status/887",
|
||||
|
@ -162,7 +162,7 @@ class InboxCreate(TestCase):
|
|||
views.inbox.activity_task(activity)
|
||||
|
||||
def test_create_unknown_type(self):
|
||||
""" ignore activities we know we've never heard of """
|
||||
"""ignore activities we know we've never heard of"""
|
||||
activity = self.create_json
|
||||
activity["object"] = {
|
||||
"id": "https://example.com/status/887",
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class InboxActivities(TestCase):
|
||||
""" inbox tests """
|
||||
"""inbox tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.com",
|
||||
|
@ -50,7 +50,7 @@ class InboxActivities(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_delete_status(self):
|
||||
""" remove a status """
|
||||
"""remove a status"""
|
||||
self.assertFalse(self.status.deleted)
|
||||
activity = {
|
||||
"type": "Delete",
|
||||
|
@ -71,7 +71,7 @@ class InboxActivities(TestCase):
|
|||
self.assertIsInstance(status.deleted_date, datetime)
|
||||
|
||||
def test_delete_status_notifications(self):
|
||||
""" remove a status with related notifications """
|
||||
"""remove a status with related notifications"""
|
||||
models.Notification.objects.create(
|
||||
related_status=self.status,
|
||||
user=self.local_user,
|
||||
|
@ -106,7 +106,7 @@ class InboxActivities(TestCase):
|
|||
self.assertEqual(models.Notification.objects.get(), notif)
|
||||
|
||||
def test_delete_user(self):
|
||||
""" delete a user """
|
||||
"""delete a user"""
|
||||
self.assertTrue(models.User.objects.get(username="rat@example.com").is_active)
|
||||
activity = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
|
@ -121,7 +121,7 @@ class InboxActivities(TestCase):
|
|||
self.assertFalse(models.User.objects.get(username="rat@example.com").is_active)
|
||||
|
||||
def test_delete_user_unknown(self):
|
||||
""" don't worry about it if we don't know the user """
|
||||
"""don't worry about it if we don't know the user"""
|
||||
self.assertEqual(models.User.objects.filter(is_active=True).count(), 2)
|
||||
activity = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class InboxRelationships(TestCase):
|
||||
""" inbox tests """
|
||||
"""inbox tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.com",
|
||||
|
@ -36,7 +36,7 @@ class InboxRelationships(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_follow(self):
|
||||
""" remote user wants to follow local user """
|
||||
"""remote user wants to follow local user"""
|
||||
activity = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/users/rat/follows/123",
|
||||
|
@ -65,7 +65,7 @@ class InboxRelationships(TestCase):
|
|||
self.assertEqual(follow.user_subject, self.remote_user)
|
||||
|
||||
def test_follow_duplicate(self):
|
||||
""" remote user wants to follow local user twice """
|
||||
"""remote user wants to follow local user twice"""
|
||||
activity = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/users/rat/follows/123",
|
||||
|
@ -92,7 +92,7 @@ class InboxRelationships(TestCase):
|
|||
self.assertEqual(follow.user_subject, self.remote_user)
|
||||
|
||||
def test_follow_manually_approved(self):
|
||||
""" needs approval before following """
|
||||
"""needs approval before following"""
|
||||
activity = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/users/rat/follows/123",
|
||||
|
@ -122,7 +122,7 @@ class InboxRelationships(TestCase):
|
|||
self.assertEqual(list(follow), [])
|
||||
|
||||
def test_undo_follow_request(self):
|
||||
""" the requester cancels a follow request """
|
||||
"""the requester cancels a follow request"""
|
||||
self.local_user.manually_approves_followers = True
|
||||
self.local_user.save(broadcast=False)
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
|
@ -152,7 +152,7 @@ class InboxRelationships(TestCase):
|
|||
self.assertFalse(self.local_user.follower_requests.exists())
|
||||
|
||||
def test_unfollow(self):
|
||||
""" remove a relationship """
|
||||
"""remove a relationship"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
rel = models.UserFollows.objects.create(
|
||||
user_subject=self.remote_user, user_object=self.local_user
|
||||
|
@ -177,7 +177,7 @@ class InboxRelationships(TestCase):
|
|||
self.assertIsNone(self.local_user.followers.first())
|
||||
|
||||
def test_follow_accept(self):
|
||||
""" a remote user approved a follow request from local """
|
||||
"""a remote user approved a follow request from local"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
rel = models.UserFollowRequest.objects.create(
|
||||
user_subject=self.local_user, user_object=self.remote_user
|
||||
|
@ -208,7 +208,7 @@ class InboxRelationships(TestCase):
|
|||
self.assertEqual(follows.first(), self.local_user)
|
||||
|
||||
def test_follow_reject(self):
|
||||
""" turn down a follow request """
|
||||
"""turn down a follow request"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
rel = models.UserFollowRequest.objects.create(
|
||||
user_subject=self.local_user, user_object=self.remote_user
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class InboxActivities(TestCase):
|
||||
""" inbox tests """
|
||||
"""inbox tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.com",
|
||||
|
@ -50,7 +50,7 @@ class InboxActivities(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_handle_favorite(self):
|
||||
""" fav a status """
|
||||
"""fav a status"""
|
||||
activity = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/fav/1",
|
||||
|
@ -68,7 +68,7 @@ class InboxActivities(TestCase):
|
|||
self.assertEqual(fav.user, self.remote_user)
|
||||
|
||||
def test_ignore_favorite(self):
|
||||
""" don't try to save an unknown status """
|
||||
"""don't try to save an unknown status"""
|
||||
activity = {
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/fav/1",
|
||||
|
@ -83,7 +83,7 @@ class InboxActivities(TestCase):
|
|||
self.assertFalse(models.Favorite.objects.exists())
|
||||
|
||||
def test_handle_unfavorite(self):
|
||||
""" fav a status """
|
||||
"""fav a status"""
|
||||
activity = {
|
||||
"id": "https://example.com/fav/1#undo",
|
||||
"type": "Undo",
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class InboxRemove(TestCase):
|
||||
""" inbox tests """
|
||||
"""inbox tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.com",
|
||||
|
@ -41,7 +41,7 @@ class InboxRemove(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_handle_unshelve_book(self):
|
||||
""" remove a book from a shelf """
|
||||
"""remove a book from a shelf"""
|
||||
shelf = models.Shelf.objects.create(user=self.remote_user, name="Test Shelf")
|
||||
shelf.remote_id = "https://bookwyrm.social/user/mouse/shelf/to-read"
|
||||
shelf.save()
|
||||
|
@ -70,7 +70,7 @@ class InboxRemove(TestCase):
|
|||
self.assertFalse(shelf.books.exists())
|
||||
|
||||
def test_handle_remove_book_from_list(self):
|
||||
""" listing a book """
|
||||
"""listing a book"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
booklist = models.List.objects.create(
|
||||
name="test list",
|
||||
|
|
|
@ -10,10 +10,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class InboxUpdate(TestCase):
|
||||
""" inbox tests """
|
||||
"""inbox tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@example.com",
|
||||
"mouse@mouse.com",
|
||||
|
@ -45,7 +45,7 @@ class InboxUpdate(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_update_list(self):
|
||||
""" a new list """
|
||||
"""a new list"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
book_list = models.List.objects.create(
|
||||
name="hi", remote_id="https://example.com/list/22", user=self.local_user
|
||||
|
@ -79,7 +79,7 @@ class InboxUpdate(TestCase):
|
|||
self.assertEqual(book_list.remote_id, "https://example.com/list/22")
|
||||
|
||||
def test_update_user(self):
|
||||
""" update an existing user """
|
||||
"""update an existing user"""
|
||||
models.UserFollows.objects.create(
|
||||
user_subject=self.local_user,
|
||||
user_object=self.remote_user,
|
||||
|
@ -116,7 +116,7 @@ class InboxUpdate(TestCase):
|
|||
self.assertTrue(self.local_user in self.remote_user.followers.all())
|
||||
|
||||
def test_update_edition(self):
|
||||
""" update an existing edition """
|
||||
"""update an existing edition"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../../data/bw_edition.json")
|
||||
bookdata = json.loads(datafile.read_bytes())
|
||||
|
||||
|
@ -146,7 +146,7 @@ class InboxUpdate(TestCase):
|
|||
self.assertEqual(book.last_edited_by, self.remote_user)
|
||||
|
||||
def test_update_work(self):
|
||||
""" update an existing edition """
|
||||
"""update an existing edition"""
|
||||
datafile = pathlib.Path(__file__).parent.joinpath("../../data/bw_work.json")
|
||||
bookdata = json.loads(datafile.read_bytes())
|
||||
|
||||
|
|
|
@ -14,10 +14,10 @@ from bookwyrm.settings import DOMAIN
|
|||
|
||||
# pylint: disable=too-many-public-methods
|
||||
class AuthenticationViews(TestCase):
|
||||
""" login and password management """
|
||||
"""login and password management"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -31,7 +31,7 @@ class AuthenticationViews(TestCase):
|
|||
self.settings = models.SiteSettings.objects.create(id=1)
|
||||
|
||||
def test_login_get(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
login = views.Login.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
@ -47,7 +47,7 @@ class AuthenticationViews(TestCase):
|
|||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_register(self):
|
||||
""" create a user """
|
||||
"""create a user"""
|
||||
view = views.Register.as_view()
|
||||
self.assertEqual(models.User.objects.count(), 1)
|
||||
request = self.factory.post(
|
||||
|
@ -68,7 +68,7 @@ class AuthenticationViews(TestCase):
|
|||
self.assertEqual(nutria.local, True)
|
||||
|
||||
def test_register_trailing_space(self):
|
||||
""" django handles this so weirdly """
|
||||
"""django handles this so weirdly"""
|
||||
view = views.Register.as_view()
|
||||
request = self.factory.post(
|
||||
"register/",
|
||||
|
@ -84,7 +84,7 @@ class AuthenticationViews(TestCase):
|
|||
self.assertEqual(nutria.local, True)
|
||||
|
||||
def test_register_invalid_email(self):
|
||||
""" gotta have an email """
|
||||
"""gotta have an email"""
|
||||
view = views.Register.as_view()
|
||||
self.assertEqual(models.User.objects.count(), 1)
|
||||
request = self.factory.post(
|
||||
|
@ -95,7 +95,7 @@ class AuthenticationViews(TestCase):
|
|||
response.render()
|
||||
|
||||
def test_register_invalid_username(self):
|
||||
""" gotta have an email """
|
||||
"""gotta have an email"""
|
||||
view = views.Register.as_view()
|
||||
self.assertEqual(models.User.objects.count(), 1)
|
||||
request = self.factory.post(
|
||||
|
@ -123,7 +123,7 @@ class AuthenticationViews(TestCase):
|
|||
response.render()
|
||||
|
||||
def test_register_closed_instance(self):
|
||||
""" you can't just register """
|
||||
"""you can't just register"""
|
||||
view = views.Register.as_view()
|
||||
self.settings.allow_registration = False
|
||||
self.settings.save()
|
||||
|
@ -135,7 +135,7 @@ class AuthenticationViews(TestCase):
|
|||
view(request)
|
||||
|
||||
def test_register_invite(self):
|
||||
""" you can't just register """
|
||||
"""you can't just register"""
|
||||
view = views.Register.as_view()
|
||||
self.settings.allow_registration = False
|
||||
self.settings.save()
|
||||
|
|
|
@ -12,10 +12,10 @@ from bookwyrm.activitypub import ActivitypubResponse
|
|||
|
||||
|
||||
class AuthorViews(TestCase):
|
||||
""" author views"""
|
||||
"""author views"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -42,7 +42,7 @@ class AuthorViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_author_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Author.as_view()
|
||||
author = models.Author.objects.create(name="Jessica")
|
||||
request = self.factory.get("")
|
||||
|
@ -62,7 +62,7 @@ class AuthorViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_edit_author_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.EditAuthor.as_view()
|
||||
author = models.Author.objects.create(name="Test Author")
|
||||
request = self.factory.get("")
|
||||
|
@ -76,7 +76,7 @@ class AuthorViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_edit_author(self):
|
||||
""" edit an author """
|
||||
"""edit an author"""
|
||||
view = views.EditAuthor.as_view()
|
||||
author = models.Author.objects.create(name="Test Author")
|
||||
self.local_user.groups.add(self.group)
|
||||
|
@ -93,7 +93,7 @@ class AuthorViews(TestCase):
|
|||
self.assertEqual(author.last_edited_by, self.local_user)
|
||||
|
||||
def test_edit_author_non_editor(self):
|
||||
""" edit an author with invalid post data"""
|
||||
"""edit an author with invalid post data"""
|
||||
view = views.EditAuthor.as_view()
|
||||
author = models.Author.objects.create(name="Test Author")
|
||||
form = forms.AuthorForm(instance=author)
|
||||
|
@ -108,7 +108,7 @@ class AuthorViews(TestCase):
|
|||
self.assertEqual(author.name, "Test Author")
|
||||
|
||||
def test_edit_author_invalid_form(self):
|
||||
""" edit an author with invalid post data"""
|
||||
"""edit an author with invalid post data"""
|
||||
view = views.EditAuthor.as_view()
|
||||
author = models.Author.objects.create(name="Test Author")
|
||||
self.local_user.groups.add(self.group)
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm import models, views
|
|||
|
||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||
class BlockViews(TestCase):
|
||||
""" view user and edit profile """
|
||||
"""view user and edit profile"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -34,7 +34,7 @@ class BlockViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_block_get(self, _):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Block.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -44,7 +44,7 @@ class BlockViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_block_post(self, _):
|
||||
""" create a "block" database entry from an activity """
|
||||
"""create a "block" database entry from an activity"""
|
||||
view = views.Block.as_view()
|
||||
self.local_user.followers.add(self.remote_user)
|
||||
models.UserFollowRequest.objects.create(
|
||||
|
@ -65,7 +65,7 @@ class BlockViews(TestCase):
|
|||
self.assertFalse(models.UserFollowRequest.objects.exists())
|
||||
|
||||
def test_unblock(self, _):
|
||||
""" undo a block """
|
||||
"""undo a block"""
|
||||
self.local_user.blocks.add(self.remote_user)
|
||||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
|
|
|
@ -18,10 +18,10 @@ from bookwyrm.activitypub import ActivitypubResponse
|
|||
|
||||
|
||||
class BookViews(TestCase):
|
||||
""" books books books """
|
||||
"""books books books"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -81,7 +81,7 @@ class BookViews(TestCase):
|
|||
)
|
||||
|
||||
def test_book_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Book.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -100,7 +100,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_edit_book_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.EditBook.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -111,7 +111,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_edit_book(self):
|
||||
""" lets a user edit a book """
|
||||
"""lets a user edit a book"""
|
||||
view = views.EditBook.as_view()
|
||||
self.local_user.groups.add(self.group)
|
||||
form = forms.EditionForm(instance=self.book)
|
||||
|
@ -125,7 +125,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(self.book.title, "New Title")
|
||||
|
||||
def test_edit_book_add_author(self):
|
||||
""" lets a user edit a book with new authors """
|
||||
"""lets a user edit a book with new authors"""
|
||||
view = views.EditBook.as_view()
|
||||
self.local_user.groups.add(self.group)
|
||||
form = forms.EditionForm(instance=self.book)
|
||||
|
@ -143,7 +143,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(self.book.title, "Example Edition")
|
||||
|
||||
def test_edit_book_add_new_author_confirm(self):
|
||||
""" lets a user edit a book confirmed with new authors """
|
||||
"""lets a user edit a book confirmed with new authors"""
|
||||
view = views.ConfirmEditBook.as_view()
|
||||
self.local_user.groups.add(self.group)
|
||||
form = forms.EditionForm(instance=self.book)
|
||||
|
@ -162,7 +162,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(self.book.authors.first().name, "Sappho")
|
||||
|
||||
def test_edit_book_remove_author(self):
|
||||
""" remove an author from a book """
|
||||
"""remove an author from a book"""
|
||||
author = models.Author.objects.create(name="Sappho")
|
||||
self.book.authors.add(author)
|
||||
form = forms.EditionForm(instance=self.book)
|
||||
|
@ -182,7 +182,7 @@ class BookViews(TestCase):
|
|||
self.assertFalse(self.book.authors.exists())
|
||||
|
||||
def test_create_book(self):
|
||||
""" create an entirely new book and work """
|
||||
"""create an entirely new book and work"""
|
||||
view = views.ConfirmEditBook.as_view()
|
||||
self.local_user.groups.add(self.group)
|
||||
form = forms.EditionForm()
|
||||
|
@ -196,7 +196,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(book.parent_work.title, "New Title")
|
||||
|
||||
def test_create_book_existing_work(self):
|
||||
""" create an entirely new book and work """
|
||||
"""create an entirely new book and work"""
|
||||
view = views.ConfirmEditBook.as_view()
|
||||
self.local_user.groups.add(self.group)
|
||||
form = forms.EditionForm()
|
||||
|
@ -211,7 +211,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(book.parent_work, self.work)
|
||||
|
||||
def test_create_book_with_author(self):
|
||||
""" create an entirely new book and work """
|
||||
"""create an entirely new book and work"""
|
||||
view = views.ConfirmEditBook.as_view()
|
||||
self.local_user.groups.add(self.group)
|
||||
form = forms.EditionForm()
|
||||
|
@ -229,7 +229,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(book.authors.first(), book.parent_work.authors.first())
|
||||
|
||||
def test_switch_edition(self):
|
||||
""" updates user's relationships to a book """
|
||||
"""updates user's relationships to a book"""
|
||||
work = models.Work.objects.create(title="test work")
|
||||
edition1 = models.Edition.objects.create(title="first ed", parent_work=work)
|
||||
edition2 = models.Edition.objects.create(title="second ed", parent_work=work)
|
||||
|
@ -253,7 +253,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(models.ReadThrough.objects.get().book, edition2)
|
||||
|
||||
def test_editions_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Editions.as_view()
|
||||
request = self.factory.get("")
|
||||
with patch("bookwyrm.views.books.is_api_request") as is_api:
|
||||
|
@ -271,7 +271,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_upload_cover_file(self):
|
||||
""" add a cover via file upload """
|
||||
"""add a cover via file upload"""
|
||||
self.assertFalse(self.book.cover)
|
||||
image_file = pathlib.Path(__file__).parent.joinpath(
|
||||
"../../static/images/default_avi.jpg"
|
||||
|
@ -296,7 +296,7 @@ class BookViews(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_upload_cover_url(self):
|
||||
""" add a cover via url """
|
||||
"""add a cover via url"""
|
||||
self.assertFalse(self.book.cover)
|
||||
image_file = pathlib.Path(__file__).parent.joinpath(
|
||||
"../../static/images/default_avi.jpg"
|
||||
|
|
|
@ -7,10 +7,10 @@ from bookwyrm import models, views
|
|||
|
||||
# pylint: disable=unused-argument
|
||||
class DirectoryViews(TestCase):
|
||||
""" tag views"""
|
||||
"""tag views"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -32,7 +32,7 @@ class DirectoryViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_directory_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Directory.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
|
|
@ -10,10 +10,10 @@ from bookwyrm import forms, models, views
|
|||
|
||||
|
||||
class FederationViews(TestCase):
|
||||
""" every response to a get request, html or json """
|
||||
"""every response to a get request, html or json"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -35,7 +35,7 @@ class FederationViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_federation_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Federation.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -46,7 +46,7 @@ class FederationViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_server_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
server = models.FederatedServer.objects.create(server_name="hi.there.com")
|
||||
view = views.FederatedServer.as_view()
|
||||
request = self.factory.get("")
|
||||
|
@ -59,7 +59,7 @@ class FederationViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_server_page_block(self):
|
||||
""" block a server """
|
||||
"""block a server"""
|
||||
server = models.FederatedServer.objects.create(server_name="hi.there.com")
|
||||
self.remote_user.federated_server = server
|
||||
self.remote_user.save()
|
||||
|
@ -79,7 +79,7 @@ class FederationViews(TestCase):
|
|||
self.assertFalse(self.remote_user.is_active)
|
||||
|
||||
def test_server_page_unblock(self):
|
||||
""" unblock a server """
|
||||
"""unblock a server"""
|
||||
server = models.FederatedServer.objects.create(
|
||||
server_name="hi.there.com", status="blocked"
|
||||
)
|
||||
|
@ -100,7 +100,7 @@ class FederationViews(TestCase):
|
|||
self.assertTrue(self.remote_user.is_active)
|
||||
|
||||
def test_add_view_get(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
# create mode
|
||||
view = views.AddFederatedServer.as_view()
|
||||
request = self.factory.get("")
|
||||
|
@ -113,7 +113,7 @@ class FederationViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_add_view_post_create(self):
|
||||
""" create a server entry """
|
||||
"""create a server entry"""
|
||||
form = forms.ServerForm()
|
||||
form.data["server_name"] = "remote.server"
|
||||
form.data["application_type"] = "coolsoft"
|
||||
|
@ -131,7 +131,7 @@ class FederationViews(TestCase):
|
|||
self.assertEqual(server.status, "blocked")
|
||||
|
||||
def test_import_blocklist(self):
|
||||
""" load a json file with a list of servers to block """
|
||||
"""load a json file with a list of servers to block"""
|
||||
server = models.FederatedServer.objects.create(server_name="hi.there.com")
|
||||
self.remote_user.federated_server = server
|
||||
self.remote_user.save()
|
||||
|
|
|
@ -17,10 +17,10 @@ from bookwyrm.activitypub import ActivitypubResponse
|
|||
@patch("bookwyrm.activitystreams.ActivityStream.get_activity_stream")
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
class FeedViews(TestCase):
|
||||
""" activity feed, statuses, dms """
|
||||
"""activity feed, statuses, dms"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -37,7 +37,7 @@ class FeedViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_feed(self, *_):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Feed.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -47,7 +47,7 @@ class FeedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_status_page(self, *_):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Status.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
status = models.Status.objects.create(content="hi", user=self.local_user)
|
||||
|
@ -67,7 +67,7 @@ class FeedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_status_page_not_found(self, *_):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Status.as_view()
|
||||
|
||||
request = self.factory.get("")
|
||||
|
@ -79,7 +79,7 @@ class FeedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 404)
|
||||
|
||||
def test_status_page_with_image(self, *_):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Status.as_view()
|
||||
|
||||
image_file = pathlib.Path(__file__).parent.joinpath(
|
||||
|
@ -115,7 +115,7 @@ class FeedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_replies_page(self, *_):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Replies.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
status = models.Status.objects.create(content="hi", user=self.local_user)
|
||||
|
@ -135,7 +135,7 @@ class FeedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_direct_messages_page(self, *_):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.DirectMessage.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -145,7 +145,7 @@ class FeedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_get_suggested_book(self, *_):
|
||||
""" gets books the ~*~ algorithm ~*~ thinks you want to post about """
|
||||
"""gets books the ~*~ algorithm ~*~ thinks you want to post about"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
models.ShelfBook.objects.create(
|
||||
book=self.book,
|
||||
|
|
|
@ -11,10 +11,10 @@ from bookwyrm import models, views
|
|||
|
||||
|
||||
class BookViews(TestCase):
|
||||
""" books books books """
|
||||
"""books books books"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -50,7 +50,7 @@ class BookViews(TestCase):
|
|||
)
|
||||
|
||||
def test_handle_follow_remote(self):
|
||||
""" send a follow request """
|
||||
"""send a follow request"""
|
||||
request = self.factory.post("", {"user": self.remote_user.username})
|
||||
request.user = self.local_user
|
||||
self.assertEqual(models.UserFollowRequest.objects.count(), 0)
|
||||
|
@ -65,7 +65,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(rel.status, "follow_request")
|
||||
|
||||
def test_handle_follow_local_manually_approves(self):
|
||||
""" send a follow request """
|
||||
"""send a follow request"""
|
||||
rat = models.User.objects.create_user(
|
||||
"rat@local.com",
|
||||
"rat@rat.com",
|
||||
|
@ -88,7 +88,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(rel.status, "follow_request")
|
||||
|
||||
def test_handle_follow_local(self):
|
||||
""" send a follow request """
|
||||
"""send a follow request"""
|
||||
rat = models.User.objects.create_user(
|
||||
"rat@local.com",
|
||||
"rat@rat.com",
|
||||
|
@ -111,7 +111,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(rel.status, "follows")
|
||||
|
||||
def test_handle_unfollow(self):
|
||||
""" send an unfollow """
|
||||
"""send an unfollow"""
|
||||
request = self.factory.post("", {"user": self.remote_user.username})
|
||||
request.user = self.local_user
|
||||
self.remote_user.followers.add(self.local_user)
|
||||
|
@ -125,7 +125,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(self.remote_user.followers.count(), 0)
|
||||
|
||||
def test_handle_accept(self):
|
||||
""" accept a follow request """
|
||||
"""accept a follow request"""
|
||||
self.local_user.manually_approves_followers = True
|
||||
self.local_user.save(broadcast=False)
|
||||
request = self.factory.post("", {"user": self.remote_user.username})
|
||||
|
@ -142,7 +142,7 @@ class BookViews(TestCase):
|
|||
self.assertEqual(self.local_user.followers.first(), self.remote_user)
|
||||
|
||||
def test_handle_reject(self):
|
||||
""" reject a follow request """
|
||||
"""reject a follow request"""
|
||||
self.local_user.manually_approves_followers = True
|
||||
self.local_user.save(broadcast=False)
|
||||
request = self.factory.post("", {"user": self.remote_user.username})
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm import forms, models, views
|
|||
|
||||
|
||||
class GetStartedViews(TestCase):
|
||||
""" helping new users get oriented """
|
||||
"""helping new users get oriented"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -31,7 +31,7 @@ class GetStartedViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_profile_view(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.GetStartedProfile.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -43,7 +43,7 @@ class GetStartedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_profile_view_post(self):
|
||||
""" save basic user details """
|
||||
"""save basic user details"""
|
||||
view = views.GetStartedProfile.as_view()
|
||||
form = forms.LimitedEditUserForm(instance=self.local_user)
|
||||
form.data["name"] = "New Name"
|
||||
|
@ -61,7 +61,7 @@ class GetStartedViews(TestCase):
|
|||
self.assertTrue(self.local_user.discoverable)
|
||||
|
||||
def test_books_view(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.GetStartedBooks.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -73,7 +73,7 @@ class GetStartedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_books_view_with_query(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.GetStartedBooks.as_view()
|
||||
request = self.factory.get("?query=Example")
|
||||
request.user = self.local_user
|
||||
|
@ -85,7 +85,7 @@ class GetStartedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_books_view_post(self):
|
||||
""" shelve some books """
|
||||
"""shelve some books"""
|
||||
view = views.GetStartedBooks.as_view()
|
||||
data = {self.book.id: self.local_user.shelf_set.first().id}
|
||||
request = self.factory.post("", data)
|
||||
|
@ -103,7 +103,7 @@ class GetStartedViews(TestCase):
|
|||
self.assertEqual(shelfbook.user, self.local_user)
|
||||
|
||||
def test_users_view(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.GetStartedUsers.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -115,7 +115,7 @@ class GetStartedViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_users_view_with_query(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.GetStartedUsers.as_view()
|
||||
request = self.factory.get("?query=rat")
|
||||
request.user = self.local_user
|
||||
|
|
|
@ -11,10 +11,10 @@ from bookwyrm import models, views
|
|||
|
||||
|
||||
class GoalViews(TestCase):
|
||||
""" viewing and creating statuses """
|
||||
"""viewing and creating statuses"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -41,7 +41,7 @@ class GoalViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_goal_page_no_goal(self):
|
||||
""" view a reading goal page for another's unset goal """
|
||||
"""view a reading goal page for another's unset goal"""
|
||||
view = views.Goal.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.rat
|
||||
|
@ -50,7 +50,7 @@ class GoalViews(TestCase):
|
|||
self.assertEqual(result.status_code, 404)
|
||||
|
||||
def test_goal_page_no_goal_self(self):
|
||||
""" view a reading goal page for your own unset goal """
|
||||
"""view a reading goal page for your own unset goal"""
|
||||
view = views.Goal.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -60,7 +60,7 @@ class GoalViews(TestCase):
|
|||
self.assertIsInstance(result, TemplateResponse)
|
||||
|
||||
def test_goal_page_anonymous(self):
|
||||
""" can't view it without login """
|
||||
"""can't view it without login"""
|
||||
view = views.Goal.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
@ -69,7 +69,7 @@ class GoalViews(TestCase):
|
|||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_goal_page_public(self):
|
||||
""" view a user's public goal """
|
||||
"""view a user's public goal"""
|
||||
models.ReadThrough.objects.create(
|
||||
finish_date=timezone.now(),
|
||||
user=self.local_user,
|
||||
|
@ -91,7 +91,7 @@ class GoalViews(TestCase):
|
|||
self.assertIsInstance(result, TemplateResponse)
|
||||
|
||||
def test_goal_page_private(self):
|
||||
""" view a user's private goal """
|
||||
"""view a user's private goal"""
|
||||
models.AnnualGoal.objects.create(
|
||||
user=self.local_user, year=2020, goal=15, privacy="followers"
|
||||
)
|
||||
|
@ -104,7 +104,7 @@ class GoalViews(TestCase):
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
def test_create_goal(self, _):
|
||||
""" create a new goal """
|
||||
"""create a new goal"""
|
||||
view = views.Goal.as_view()
|
||||
request = self.factory.post(
|
||||
"",
|
||||
|
|
|
@ -13,10 +13,10 @@ from bookwyrm.settings import USER_AGENT
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
class ViewsHelpers(TestCase):
|
||||
""" viewing and creating statuses """
|
||||
"""viewing and creating statuses"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -53,12 +53,12 @@ class ViewsHelpers(TestCase):
|
|||
)
|
||||
|
||||
def test_get_edition(self, _):
|
||||
""" given an edition or a work, returns an edition """
|
||||
"""given an edition or a work, returns an edition"""
|
||||
self.assertEqual(views.helpers.get_edition(self.book.id), self.book)
|
||||
self.assertEqual(views.helpers.get_edition(self.work.id), self.book)
|
||||
|
||||
def test_get_user_from_username(self, _):
|
||||
""" works for either localname or username """
|
||||
"""works for either localname or username"""
|
||||
self.assertEqual(
|
||||
views.helpers.get_user_from_username(self.local_user, "mouse"),
|
||||
self.local_user,
|
||||
|
@ -71,7 +71,7 @@ class ViewsHelpers(TestCase):
|
|||
views.helpers.get_user_from_username(self.local_user, "mojfse@example.com")
|
||||
|
||||
def test_is_api_request(self, _):
|
||||
""" should it return html or json """
|
||||
"""should it return html or json"""
|
||||
request = self.factory.get("/path")
|
||||
request.headers = {"Accept": "application/json"}
|
||||
self.assertTrue(views.helpers.is_api_request(request))
|
||||
|
@ -85,12 +85,12 @@ class ViewsHelpers(TestCase):
|
|||
self.assertFalse(views.helpers.is_api_request(request))
|
||||
|
||||
def test_is_api_request_no_headers(self, _):
|
||||
""" should it return html or json """
|
||||
"""should it return html or json"""
|
||||
request = self.factory.get("/path")
|
||||
self.assertFalse(views.helpers.is_api_request(request))
|
||||
|
||||
def test_is_bookwyrm_request(self, _):
|
||||
""" checks if a request came from a bookwyrm instance """
|
||||
"""checks if a request came from a bookwyrm instance"""
|
||||
request = self.factory.get("", {"q": "Test Book"})
|
||||
self.assertFalse(views.helpers.is_bookwyrm_request(request))
|
||||
|
||||
|
@ -105,7 +105,7 @@ class ViewsHelpers(TestCase):
|
|||
self.assertTrue(views.helpers.is_bookwyrm_request(request))
|
||||
|
||||
def test_existing_user(self, _):
|
||||
""" simple database lookup by username """
|
||||
"""simple database lookup by username"""
|
||||
result = views.helpers.handle_remote_webfinger("@mouse@local.com")
|
||||
self.assertEqual(result, self.local_user)
|
||||
|
||||
|
@ -117,7 +117,7 @@ class ViewsHelpers(TestCase):
|
|||
|
||||
@responses.activate
|
||||
def test_load_user(self, _):
|
||||
""" find a remote user using webfinger """
|
||||
"""find a remote user using webfinger"""
|
||||
username = "mouse@example.com"
|
||||
wellknown = {
|
||||
"subject": "acct:mouse@example.com",
|
||||
|
@ -147,7 +147,7 @@ class ViewsHelpers(TestCase):
|
|||
self.assertEqual(result.username, "mouse@example.com")
|
||||
|
||||
def test_user_on_blocked_server(self, _):
|
||||
""" find a remote user using webfinger """
|
||||
"""find a remote user using webfinger"""
|
||||
models.FederatedServer.objects.create(
|
||||
server_name="example.com", status="blocked"
|
||||
)
|
||||
|
@ -156,7 +156,7 @@ class ViewsHelpers(TestCase):
|
|||
self.assertIsNone(result)
|
||||
|
||||
def test_handle_reading_status_to_read(self, _):
|
||||
""" posts shelve activities """
|
||||
"""posts shelve activities"""
|
||||
shelf = self.local_user.shelf_set.get(identifier="to-read")
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
views.helpers.handle_reading_status(
|
||||
|
@ -168,7 +168,7 @@ class ViewsHelpers(TestCase):
|
|||
self.assertEqual(status.content, "wants to read")
|
||||
|
||||
def test_handle_reading_status_reading(self, _):
|
||||
""" posts shelve activities """
|
||||
"""posts shelve activities"""
|
||||
shelf = self.local_user.shelf_set.get(identifier="reading")
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
views.helpers.handle_reading_status(
|
||||
|
@ -180,7 +180,7 @@ class ViewsHelpers(TestCase):
|
|||
self.assertEqual(status.content, "started reading")
|
||||
|
||||
def test_handle_reading_status_read(self, _):
|
||||
""" posts shelve activities """
|
||||
"""posts shelve activities"""
|
||||
shelf = self.local_user.shelf_set.get(identifier="read")
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
views.helpers.handle_reading_status(
|
||||
|
@ -192,7 +192,7 @@ class ViewsHelpers(TestCase):
|
|||
self.assertEqual(status.content, "finished reading")
|
||||
|
||||
def test_handle_reading_status_other(self, _):
|
||||
""" posts shelve activities """
|
||||
"""posts shelve activities"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
views.helpers.handle_reading_status(
|
||||
self.local_user, self.shelf, self.book, "public"
|
||||
|
@ -200,7 +200,7 @@ class ViewsHelpers(TestCase):
|
|||
self.assertFalse(models.GeneratedNote.objects.exists())
|
||||
|
||||
def test_get_annotated_users(self, _):
|
||||
""" list of people you might know """
|
||||
"""list of people you might know"""
|
||||
user_1 = models.User.objects.create_user(
|
||||
"nutria@local.com",
|
||||
"nutria@nutria.com",
|
||||
|
@ -247,7 +247,7 @@ class ViewsHelpers(TestCase):
|
|||
self.assertEqual(remote_user_annotated.shared_books, 0)
|
||||
|
||||
def test_get_annotated_users_counts(self, _):
|
||||
""" correct counting for multiple shared attributed """
|
||||
"""correct counting for multiple shared attributed"""
|
||||
user_1 = models.User.objects.create_user(
|
||||
"nutria@local.com",
|
||||
"nutria@nutria.com",
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm import views
|
|||
|
||||
|
||||
class ImportViews(TestCase):
|
||||
""" goodreads import views """
|
||||
"""goodreads import views"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -24,7 +24,7 @@ class ImportViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_import_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Import.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -34,7 +34,7 @@ class ImportViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_import_status(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.ImportStatus.as_view()
|
||||
import_job = models.ImportJob.objects.create(user=self.local_user)
|
||||
request = self.factory.get("")
|
||||
|
@ -47,7 +47,7 @@ class ImportViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_retry_import(self):
|
||||
""" retry failed items """
|
||||
"""retry failed items"""
|
||||
view = views.ImportStatus.as_view()
|
||||
import_job = models.ImportJob.objects.create(
|
||||
user=self.local_user, privacy="unlisted"
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm import models, views
|
|||
|
||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||
class InteractionViews(TestCase):
|
||||
""" viewing and creating statuses """
|
||||
"""viewing and creating statuses"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -41,7 +41,7 @@ class InteractionViews(TestCase):
|
|||
)
|
||||
|
||||
def test_favorite(self, _):
|
||||
""" create and broadcast faving a status """
|
||||
"""create and broadcast faving a status"""
|
||||
view = views.Favorite.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.remote_user
|
||||
|
@ -59,7 +59,7 @@ class InteractionViews(TestCase):
|
|||
self.assertEqual(notification.related_user, self.remote_user)
|
||||
|
||||
def test_unfavorite(self, _):
|
||||
""" unfav a status """
|
||||
"""unfav a status"""
|
||||
view = views.Unfavorite.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.remote_user
|
||||
|
@ -76,7 +76,7 @@ class InteractionViews(TestCase):
|
|||
self.assertEqual(models.Notification.objects.count(), 0)
|
||||
|
||||
def test_boost(self, _):
|
||||
""" boost a status """
|
||||
"""boost a status"""
|
||||
view = views.Boost.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.remote_user
|
||||
|
@ -98,7 +98,7 @@ class InteractionViews(TestCase):
|
|||
self.assertEqual(notification.related_status, status)
|
||||
|
||||
def test_self_boost(self, _):
|
||||
""" boost your own status """
|
||||
"""boost your own status"""
|
||||
view = views.Boost.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
|
@ -122,7 +122,7 @@ class InteractionViews(TestCase):
|
|||
self.assertFalse(models.Notification.objects.exists())
|
||||
|
||||
def test_boost_unlisted(self, _):
|
||||
""" boost a status """
|
||||
"""boost a status"""
|
||||
view = views.Boost.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
|
@ -137,7 +137,7 @@ class InteractionViews(TestCase):
|
|||
self.assertEqual(boost.privacy, "unlisted")
|
||||
|
||||
def test_boost_private(self, _):
|
||||
""" boost a status """
|
||||
"""boost a status"""
|
||||
view = views.Boost.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
|
@ -150,7 +150,7 @@ class InteractionViews(TestCase):
|
|||
self.assertFalse(models.Boost.objects.exists())
|
||||
|
||||
def test_boost_twice(self, _):
|
||||
""" boost a status """
|
||||
"""boost a status"""
|
||||
view = views.Boost.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
|
@ -162,7 +162,7 @@ class InteractionViews(TestCase):
|
|||
self.assertEqual(models.Boost.objects.count(), 1)
|
||||
|
||||
def test_unboost(self, _):
|
||||
""" undo a boost """
|
||||
"""undo a boost"""
|
||||
view = views.Unboost.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.remote_user
|
||||
|
|
|
@ -11,10 +11,10 @@ from bookwyrm import views
|
|||
|
||||
|
||||
class InviteViews(TestCase):
|
||||
""" every response to a get request, html or json """
|
||||
"""every response to a get request, html or json"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -26,7 +26,7 @@ class InviteViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_invite_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Invite.as_view()
|
||||
models.SiteInvite.objects.create(code="hi", user=self.local_user)
|
||||
request = self.factory.get("")
|
||||
|
@ -41,7 +41,7 @@ class InviteViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_manage_invites(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.ManageInvites.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -52,7 +52,7 @@ class InviteViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_invite_request(self):
|
||||
""" request to join a server """
|
||||
"""request to join a server"""
|
||||
form = forms.InviteRequestForm()
|
||||
form.data["email"] = "new@user.email"
|
||||
|
||||
|
@ -66,7 +66,7 @@ class InviteViews(TestCase):
|
|||
self.assertEqual(req.email, "new@user.email")
|
||||
|
||||
def test_invite_request_email_taken(self):
|
||||
""" request to join a server with an existing user email """
|
||||
"""request to join a server with an existing user email"""
|
||||
form = forms.InviteRequestForm()
|
||||
form.data["email"] = "mouse@mouse.mouse"
|
||||
|
||||
|
@ -80,7 +80,7 @@ class InviteViews(TestCase):
|
|||
self.assertFalse(models.InviteRequest.objects.exists())
|
||||
|
||||
def test_manage_invite_requests(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.ManageInviteRequests.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -98,7 +98,7 @@ class InviteViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_manage_invite_requests_send(self):
|
||||
""" send an invite """
|
||||
"""send an invite"""
|
||||
req = models.InviteRequest.objects.create(email="fish@example.com")
|
||||
|
||||
view = views.ManageInviteRequests.as_view()
|
||||
|
@ -113,7 +113,7 @@ class InviteViews(TestCase):
|
|||
self.assertIsNotNone(req.invite)
|
||||
|
||||
def test_ignore_invite_request(self):
|
||||
""" don't invite that jerk """
|
||||
"""don't invite that jerk"""
|
||||
req = models.InviteRequest.objects.create(email="fish@example.com")
|
||||
|
||||
view = views.ignore_invite_request
|
||||
|
|
|
@ -11,10 +11,10 @@ from bookwyrm.settings import DOMAIN
|
|||
|
||||
|
||||
class IsbnViews(TestCase):
|
||||
""" tag views"""
|
||||
"""tag views"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -37,7 +37,7 @@ class IsbnViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_isbn_json_response(self):
|
||||
""" searches local data only and returns book data in json format """
|
||||
"""searches local data only and returns book data in json format"""
|
||||
view = views.Isbn.as_view()
|
||||
request = self.factory.get("")
|
||||
with patch("bookwyrm.views.isbn.is_api_request") as is_api:
|
||||
|
|
|
@ -10,10 +10,10 @@ from bookwyrm import views
|
|||
|
||||
|
||||
class LandingViews(TestCase):
|
||||
""" pages you land on without really trying """
|
||||
"""pages you land on without really trying"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -27,7 +27,7 @@ class LandingViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_home_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Home.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -43,7 +43,7 @@ class LandingViews(TestCase):
|
|||
result.render()
|
||||
|
||||
def test_about_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.About.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -53,7 +53,7 @@ class LandingViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_discover(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Discover.as_view()
|
||||
request = self.factory.get("")
|
||||
result = view(request)
|
||||
|
|
|
@ -12,10 +12,10 @@ from bookwyrm.activitypub import ActivitypubResponse
|
|||
|
||||
# pylint: disable=unused-argument
|
||||
class ListViews(TestCase):
|
||||
""" tag views"""
|
||||
"""tag views"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -67,7 +67,7 @@ class ListViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_lists_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Lists.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
models.List.objects.create(name="Public list", user=self.local_user)
|
||||
|
@ -90,7 +90,7 @@ class ListViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_lists_create(self):
|
||||
""" create list view """
|
||||
"""create list view"""
|
||||
view = views.Lists.as_view()
|
||||
request = self.factory.post(
|
||||
"",
|
||||
|
@ -118,7 +118,7 @@ class ListViews(TestCase):
|
|||
self.assertEqual(new_list.curation, "open")
|
||||
|
||||
def test_list_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -153,7 +153,7 @@ class ListViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_list_edit(self):
|
||||
""" edit a list """
|
||||
"""edit a list"""
|
||||
view = views.List.as_view()
|
||||
request = self.factory.post(
|
||||
"",
|
||||
|
@ -185,7 +185,7 @@ class ListViews(TestCase):
|
|||
self.assertEqual(self.list.curation, "curated")
|
||||
|
||||
def test_curate_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Curate.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
models.List.objects.create(name="Public list", user=self.local_user)
|
||||
|
@ -205,7 +205,7 @@ class ListViews(TestCase):
|
|||
self.assertEqual(result.status_code, 302)
|
||||
|
||||
def test_curate_approve(self):
|
||||
""" approve a pending item """
|
||||
"""approve a pending item"""
|
||||
view = views.Curate.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
pending = models.ListItem.objects.create(
|
||||
|
@ -240,7 +240,7 @@ class ListViews(TestCase):
|
|||
self.assertTrue(pending.approved)
|
||||
|
||||
def test_curate_reject(self):
|
||||
""" approve a pending item """
|
||||
"""approve a pending item"""
|
||||
view = views.Curate.as_view()
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
pending = models.ListItem.objects.create(
|
||||
|
@ -266,7 +266,7 @@ class ListViews(TestCase):
|
|||
self.assertFalse(models.ListItem.objects.exists())
|
||||
|
||||
def test_add_book(self):
|
||||
""" put a book on a list """
|
||||
"""put a book on a list"""
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
|
@ -545,7 +545,7 @@ class ListViews(TestCase):
|
|||
self.assertEqual(items[2].order, 3)
|
||||
|
||||
def test_add_book_outsider(self):
|
||||
""" put a book on a list """
|
||||
"""put a book on a list"""
|
||||
self.list.curation = "open"
|
||||
self.list.save(broadcast=False)
|
||||
request = self.factory.post(
|
||||
|
@ -571,7 +571,7 @@ class ListViews(TestCase):
|
|||
self.assertTrue(item.approved)
|
||||
|
||||
def test_add_book_pending(self):
|
||||
""" put a book on a list awaiting approval """
|
||||
"""put a book on a list awaiting approval"""
|
||||
self.list.curation = "curated"
|
||||
self.list.save(broadcast=False)
|
||||
request = self.factory.post(
|
||||
|
@ -601,7 +601,7 @@ class ListViews(TestCase):
|
|||
self.assertFalse(item.approved)
|
||||
|
||||
def test_add_book_self_curated(self):
|
||||
""" put a book on a list automatically approved """
|
||||
"""put a book on a list automatically approved"""
|
||||
self.list.curation = "curated"
|
||||
self.list.save(broadcast=False)
|
||||
request = self.factory.post(
|
||||
|
@ -627,7 +627,7 @@ class ListViews(TestCase):
|
|||
self.assertTrue(item.approved)
|
||||
|
||||
def test_remove_book(self):
|
||||
""" take an item off a list """
|
||||
"""take an item off a list"""
|
||||
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
item = models.ListItem.objects.create(
|
||||
|
@ -651,7 +651,7 @@ class ListViews(TestCase):
|
|||
self.assertFalse(self.list.listitem_set.exists())
|
||||
|
||||
def test_remove_book_unauthorized(self):
|
||||
""" take an item off a list """
|
||||
"""take an item off a list"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
item = models.ListItem.objects.create(
|
||||
book_list=self.list, user=self.local_user, book=self.book, order=1
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm import views
|
|||
|
||||
|
||||
class NotificationViews(TestCase):
|
||||
""" notifications """
|
||||
"""notifications"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -23,7 +23,7 @@ class NotificationViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_notifications_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Notifications.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -33,7 +33,7 @@ class NotificationViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_clear_notifications(self):
|
||||
""" erase notifications """
|
||||
"""erase notifications"""
|
||||
models.Notification.objects.create(
|
||||
user=self.local_user, notification_type="FAVORITE"
|
||||
)
|
||||
|
|
|
@ -13,10 +13,10 @@ from bookwyrm.settings import USER_AGENT
|
|||
# pylint: disable=too-many-public-methods
|
||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||
class OutboxView(TestCase):
|
||||
""" sends out activities """
|
||||
"""sends out activities"""
|
||||
|
||||
def setUp(self):
|
||||
""" we'll need some data """
|
||||
"""we'll need some data"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -34,19 +34,19 @@ class OutboxView(TestCase):
|
|||
)
|
||||
|
||||
def test_outbox(self, _):
|
||||
""" returns user's statuses """
|
||||
"""returns user's statuses"""
|
||||
request = self.factory.get("")
|
||||
result = views.Outbox.as_view()(request, "mouse")
|
||||
self.assertIsInstance(result, JsonResponse)
|
||||
|
||||
def test_outbox_bad_method(self, _):
|
||||
""" can't POST to outbox """
|
||||
"""can't POST to outbox"""
|
||||
request = self.factory.post("")
|
||||
result = views.Outbox.as_view()(request, "mouse")
|
||||
self.assertEqual(result.status_code, 405)
|
||||
|
||||
def test_outbox_unknown_user(self, _):
|
||||
""" should 404 for unknown and remote users """
|
||||
"""should 404 for unknown and remote users"""
|
||||
request = self.factory.post("")
|
||||
result = views.Outbox.as_view()(request, "beepboop")
|
||||
self.assertEqual(result.status_code, 405)
|
||||
|
@ -54,7 +54,7 @@ class OutboxView(TestCase):
|
|||
self.assertEqual(result.status_code, 405)
|
||||
|
||||
def test_outbox_privacy(self, _):
|
||||
""" don't show dms et cetera in outbox """
|
||||
"""don't show dms et cetera in outbox"""
|
||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||
models.Status.objects.create(
|
||||
content="PRIVATE!!", user=self.local_user, privacy="direct"
|
||||
|
@ -77,7 +77,7 @@ class OutboxView(TestCase):
|
|||
self.assertEqual(data["totalItems"], 2)
|
||||
|
||||
def test_outbox_filter(self, _):
|
||||
""" if we only care about reviews, only get reviews """
|
||||
"""if we only care about reviews, only get reviews"""
|
||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||
models.Review.objects.create(
|
||||
content="look at this",
|
||||
|
@ -103,7 +103,7 @@ class OutboxView(TestCase):
|
|||
self.assertEqual(data["totalItems"], 1)
|
||||
|
||||
def test_outbox_bookwyrm_request_true(self, _):
|
||||
""" should differentiate between bookwyrm and outside requests """
|
||||
"""should differentiate between bookwyrm and outside requests"""
|
||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||
models.Review.objects.create(
|
||||
name="hi",
|
||||
|
@ -121,7 +121,7 @@ class OutboxView(TestCase):
|
|||
self.assertEqual(data["orderedItems"][0]["type"], "Review")
|
||||
|
||||
def test_outbox_bookwyrm_request_false(self, _):
|
||||
""" should differentiate between bookwyrm and outside requests """
|
||||
"""should differentiate between bookwyrm and outside requests"""
|
||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||
models.Review.objects.create(
|
||||
name="hi",
|
||||
|
|
|
@ -10,10 +10,10 @@ from bookwyrm import models, views
|
|||
|
||||
|
||||
class PasswordViews(TestCase):
|
||||
""" view user and edit profile """
|
||||
"""view user and edit profile"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -27,7 +27,7 @@ class PasswordViews(TestCase):
|
|||
models.SiteSettings.objects.create(id=1)
|
||||
|
||||
def test_password_reset_request(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.PasswordResetRequest.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -38,7 +38,7 @@ class PasswordViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_password_reset_request_post(self):
|
||||
""" send 'em an email """
|
||||
"""send 'em an email"""
|
||||
request = self.factory.post("", {"email": "aa@bb.ccc"})
|
||||
view = views.PasswordResetRequest.as_view()
|
||||
resp = view(request)
|
||||
|
@ -53,7 +53,7 @@ class PasswordViews(TestCase):
|
|||
self.assertEqual(models.PasswordReset.objects.get().user, self.local_user)
|
||||
|
||||
def test_password_reset(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.PasswordReset.as_view()
|
||||
code = models.PasswordReset.objects.create(user=self.local_user)
|
||||
request = self.factory.get("")
|
||||
|
@ -64,7 +64,7 @@ class PasswordViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_password_reset_post(self):
|
||||
""" reset from code """
|
||||
"""reset from code"""
|
||||
view = views.PasswordReset.as_view()
|
||||
code = models.PasswordReset.objects.create(user=self.local_user)
|
||||
request = self.factory.post("", {"password": "hi", "confirm-password": "hi"})
|
||||
|
@ -74,7 +74,7 @@ class PasswordViews(TestCase):
|
|||
self.assertFalse(models.PasswordReset.objects.exists())
|
||||
|
||||
def test_password_reset_wrong_code(self):
|
||||
""" reset from code """
|
||||
"""reset from code"""
|
||||
view = views.PasswordReset.as_view()
|
||||
models.PasswordReset.objects.create(user=self.local_user)
|
||||
request = self.factory.post("", {"password": "hi", "confirm-password": "hi"})
|
||||
|
@ -83,7 +83,7 @@ class PasswordViews(TestCase):
|
|||
self.assertTrue(models.PasswordReset.objects.exists())
|
||||
|
||||
def test_password_reset_mismatch(self):
|
||||
""" reset from code """
|
||||
"""reset from code"""
|
||||
view = views.PasswordReset.as_view()
|
||||
code = models.PasswordReset.objects.create(user=self.local_user)
|
||||
request = self.factory.post("", {"password": "hi", "confirm-password": "hihi"})
|
||||
|
@ -92,7 +92,7 @@ class PasswordViews(TestCase):
|
|||
self.assertTrue(models.PasswordReset.objects.exists())
|
||||
|
||||
def test_password_change_get(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.ChangePassword.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -103,7 +103,7 @@ class PasswordViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_password_change(self):
|
||||
""" change password """
|
||||
"""change password"""
|
||||
view = views.ChangePassword.as_view()
|
||||
password_hash = self.local_user.password
|
||||
request = self.factory.post("", {"password": "hi", "confirm-password": "hi"})
|
||||
|
@ -113,7 +113,7 @@ class PasswordViews(TestCase):
|
|||
self.assertNotEqual(self.local_user.password, password_hash)
|
||||
|
||||
def test_password_change_mismatch(self):
|
||||
""" change password """
|
||||
"""change password"""
|
||||
view = views.ChangePassword.as_view()
|
||||
password_hash = self.local_user.password
|
||||
request = self.factory.post("", {"password": "hi", "confirm-password": "hihi"})
|
||||
|
|
|
@ -10,10 +10,10 @@ from bookwyrm import models, views
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||
class ReadingViews(TestCase):
|
||||
""" viewing and creating statuses """
|
||||
"""viewing and creating statuses"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -41,7 +41,7 @@ class ReadingViews(TestCase):
|
|||
)
|
||||
|
||||
def test_start_reading(self, _):
|
||||
""" begin a book """
|
||||
"""begin a book"""
|
||||
shelf = self.local_user.shelf_set.get(identifier=models.Shelf.READING)
|
||||
self.assertFalse(shelf.books.exists())
|
||||
self.assertFalse(models.Status.objects.exists())
|
||||
|
@ -72,7 +72,7 @@ class ReadingViews(TestCase):
|
|||
self.assertEqual(readthrough.book, self.book)
|
||||
|
||||
def test_start_reading_reshelf(self, _):
|
||||
""" begin a book """
|
||||
"""begin a book"""
|
||||
to_read_shelf = self.local_user.shelf_set.get(identifier=models.Shelf.TO_READ)
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
models.ShelfBook.objects.create(
|
||||
|
@ -92,7 +92,7 @@ class ReadingViews(TestCase):
|
|||
self.assertEqual(shelf.books.get(), self.book)
|
||||
|
||||
def test_finish_reading(self, _):
|
||||
""" begin a book """
|
||||
"""begin a book"""
|
||||
shelf = self.local_user.shelf_set.get(identifier=models.Shelf.READ_FINISHED)
|
||||
self.assertFalse(shelf.books.exists())
|
||||
self.assertFalse(models.Status.objects.exists())
|
||||
|
@ -128,7 +128,7 @@ class ReadingViews(TestCase):
|
|||
self.assertEqual(readthrough.book, self.book)
|
||||
|
||||
def test_edit_readthrough(self, _):
|
||||
""" adding dates to an ongoing readthrough """
|
||||
"""adding dates to an ongoing readthrough"""
|
||||
start = timezone.make_aware(dateutil.parser.parse("2021-01-03"))
|
||||
readthrough = models.ReadThrough.objects.create(
|
||||
book=self.book, user=self.local_user, start_date=start
|
||||
|
@ -155,7 +155,7 @@ class ReadingViews(TestCase):
|
|||
self.assertEqual(readthrough.book, self.book)
|
||||
|
||||
def test_delete_readthrough(self, _):
|
||||
""" remove a readthrough """
|
||||
"""remove a readthrough"""
|
||||
readthrough = models.ReadThrough.objects.create(
|
||||
book=self.book, user=self.local_user
|
||||
)
|
||||
|
@ -172,7 +172,7 @@ class ReadingViews(TestCase):
|
|||
self.assertFalse(models.ReadThrough.objects.filter(id=readthrough.id).exists())
|
||||
|
||||
def test_create_readthrough(self, _):
|
||||
""" adding new read dates """
|
||||
"""adding new read dates"""
|
||||
request = self.factory.post(
|
||||
"",
|
||||
{
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm import models
|
|||
|
||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||
class ReadThrough(TestCase):
|
||||
""" readthrough tests """
|
||||
"""readthrough tests"""
|
||||
|
||||
def setUp(self):
|
||||
""" basic user and book data """
|
||||
"""basic user and book data"""
|
||||
self.client = Client()
|
||||
|
||||
self.work = models.Work.objects.create(title="Example Work")
|
||||
|
@ -52,7 +52,7 @@ class ReadThrough(TestCase):
|
|||
self.assertEqual(delay_mock.call_count, 1)
|
||||
|
||||
def test_create_progress_readthrough(self, delay_mock):
|
||||
""" a readthrough with progress """
|
||||
"""a readthrough with progress"""
|
||||
self.assertEqual(self.edition.readthrough_set.count(), 0)
|
||||
|
||||
self.client.post(
|
||||
|
|
|
@ -7,10 +7,10 @@ from bookwyrm import forms, models, views
|
|||
|
||||
|
||||
class ReportViews(TestCase):
|
||||
""" every response to a get request, html or json """
|
||||
"""every response to a get request, html or json"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -29,7 +29,7 @@ class ReportViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_reports_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Reports.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -41,7 +41,7 @@ class ReportViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_reports_page_with_data(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Reports.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -54,7 +54,7 @@ class ReportViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_report_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Report.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -68,7 +68,7 @@ class ReportViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_report_comment(self):
|
||||
""" comment on a report """
|
||||
"""comment on a report"""
|
||||
view = views.Report.as_view()
|
||||
request = self.factory.post("", {"note": "hi"})
|
||||
request.user = self.local_user
|
||||
|
@ -83,7 +83,7 @@ class ReportViews(TestCase):
|
|||
self.assertEqual(comment.report, report)
|
||||
|
||||
def test_make_report(self):
|
||||
""" a user reports another user """
|
||||
"""a user reports another user"""
|
||||
form = forms.ReportForm()
|
||||
form.data["reporter"] = self.local_user.id
|
||||
form.data["user"] = self.rat.id
|
||||
|
@ -97,7 +97,7 @@ class ReportViews(TestCase):
|
|||
self.assertEqual(report.user, self.rat)
|
||||
|
||||
def test_resolve_report(self):
|
||||
""" toggle report resolution status """
|
||||
"""toggle report resolution status"""
|
||||
report = models.Report.objects.create(reporter=self.local_user, user=self.rat)
|
||||
self.assertFalse(report.resolved)
|
||||
request = self.factory.post("")
|
||||
|
@ -115,7 +115,7 @@ class ReportViews(TestCase):
|
|||
self.assertFalse(report.resolved)
|
||||
|
||||
def test_suspend_user(self):
|
||||
""" toggle whether a user is able to log in """
|
||||
"""toggle whether a user is able to log in"""
|
||||
self.assertTrue(self.rat.is_active)
|
||||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
|
|
|
@ -8,10 +8,10 @@ from bookwyrm.views import rss_feed
|
|||
|
||||
|
||||
class RssFeedView(TestCase):
|
||||
""" rss feed behaves as expected """
|
||||
"""rss feed behaves as expected"""
|
||||
|
||||
def setUp(self):
|
||||
""" test data """
|
||||
"""test data"""
|
||||
self.site = models.SiteSettings.objects.create()
|
||||
|
||||
self.user = models.User.objects.create_user(
|
||||
|
@ -50,7 +50,7 @@ class RssFeedView(TestCase):
|
|||
|
||||
@patch("bookwyrm.activitystreams.ActivityStream.get_activity_stream")
|
||||
def test_rss_feed(self, _):
|
||||
""" load an rss feed """
|
||||
"""load an rss feed"""
|
||||
view = rss_feed.RssFeed()
|
||||
request = self.factory.get("/user/rss_user/rss")
|
||||
request.user = self.user
|
||||
|
|
|
@ -13,10 +13,10 @@ from bookwyrm.settings import DOMAIN
|
|||
|
||||
|
||||
class ShelfViews(TestCase):
|
||||
""" tag views"""
|
||||
"""tag views"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -38,7 +38,7 @@ class ShelfViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_search_json_response(self):
|
||||
""" searches local data only and returns book data in json format """
|
||||
"""searches local data only and returns book data in json format"""
|
||||
view = views.Search.as_view()
|
||||
# we need a connector for this, sorry
|
||||
request = self.factory.get("", {"q": "Test Book"})
|
||||
|
@ -53,11 +53,11 @@ class ShelfViews(TestCase):
|
|||
self.assertEqual(data[0]["key"], "https://%s/book/%d" % (DOMAIN, self.book.id))
|
||||
|
||||
def test_search_html_response(self):
|
||||
""" searches remote connectors """
|
||||
"""searches remote connectors"""
|
||||
view = views.Search.as_view()
|
||||
|
||||
class TestConnector(abstract_connector.AbstractMinimalConnector):
|
||||
""" nothing added here """
|
||||
"""nothing added here"""
|
||||
|
||||
def format_search_result(self, search_result):
|
||||
pass
|
||||
|
@ -106,7 +106,7 @@ class ShelfViews(TestCase):
|
|||
)
|
||||
|
||||
def test_search_html_response_users(self):
|
||||
""" searches remote connectors """
|
||||
"""searches remote connectors"""
|
||||
view = views.Search.as_view()
|
||||
request = self.factory.get("", {"q": "mouse"})
|
||||
request.user = self.local_user
|
||||
|
|
|
@ -11,10 +11,10 @@ from bookwyrm.activitypub import ActivitypubResponse
|
|||
|
||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||
class ShelfViews(TestCase):
|
||||
""" tag views"""
|
||||
"""tag views"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -37,7 +37,7 @@ class ShelfViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_shelf_page(self, _):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Shelf.as_view()
|
||||
shelf = self.local_user.shelf_set.first()
|
||||
request = self.factory.get("")
|
||||
|
@ -64,7 +64,7 @@ class ShelfViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_edit_shelf_privacy(self, _):
|
||||
""" set name or privacy on shelf """
|
||||
"""set name or privacy on shelf"""
|
||||
view = views.Shelf.as_view()
|
||||
shelf = self.local_user.shelf_set.get(identifier="to-read")
|
||||
self.assertEqual(shelf.privacy, "public")
|
||||
|
@ -84,7 +84,7 @@ class ShelfViews(TestCase):
|
|||
self.assertEqual(shelf.privacy, "unlisted")
|
||||
|
||||
def test_edit_shelf_name(self, _):
|
||||
""" change the name of an editable shelf """
|
||||
"""change the name of an editable shelf"""
|
||||
view = views.Shelf.as_view()
|
||||
shelf = models.Shelf.objects.create(name="Test Shelf", user=self.local_user)
|
||||
self.assertEqual(shelf.privacy, "public")
|
||||
|
@ -101,7 +101,7 @@ class ShelfViews(TestCase):
|
|||
self.assertEqual(shelf.identifier, "testshelf-%d" % shelf.id)
|
||||
|
||||
def test_edit_shelf_name_not_editable(self, _):
|
||||
""" can't change the name of an non-editable shelf """
|
||||
"""can't change the name of an non-editable shelf"""
|
||||
view = views.Shelf.as_view()
|
||||
shelf = self.local_user.shelf_set.get(identifier="to-read")
|
||||
self.assertEqual(shelf.privacy, "public")
|
||||
|
@ -116,7 +116,7 @@ class ShelfViews(TestCase):
|
|||
self.assertEqual(shelf.name, "To Read")
|
||||
|
||||
def test_handle_shelve(self, _):
|
||||
""" shelve a book """
|
||||
"""shelve a book"""
|
||||
request = self.factory.post(
|
||||
"", {"book": self.book.id, "shelf": self.shelf.identifier}
|
||||
)
|
||||
|
@ -134,7 +134,7 @@ class ShelfViews(TestCase):
|
|||
self.assertEqual(self.shelf.books.get(), self.book)
|
||||
|
||||
def test_handle_shelve_to_read(self, _):
|
||||
""" special behavior for the to-read shelf """
|
||||
"""special behavior for the to-read shelf"""
|
||||
shelf = models.Shelf.objects.get(identifier="to-read")
|
||||
request = self.factory.post(
|
||||
"", {"book": self.book.id, "shelf": shelf.identifier}
|
||||
|
@ -147,7 +147,7 @@ class ShelfViews(TestCase):
|
|||
self.assertEqual(shelf.books.get(), self.book)
|
||||
|
||||
def test_handle_shelve_reading(self, _):
|
||||
""" special behavior for the reading shelf """
|
||||
"""special behavior for the reading shelf"""
|
||||
shelf = models.Shelf.objects.get(identifier="reading")
|
||||
request = self.factory.post(
|
||||
"", {"book": self.book.id, "shelf": shelf.identifier}
|
||||
|
@ -160,7 +160,7 @@ class ShelfViews(TestCase):
|
|||
self.assertEqual(shelf.books.get(), self.book)
|
||||
|
||||
def test_handle_shelve_read(self, _):
|
||||
""" special behavior for the read shelf """
|
||||
"""special behavior for the read shelf"""
|
||||
shelf = models.Shelf.objects.get(identifier="read")
|
||||
request = self.factory.post(
|
||||
"", {"book": self.book.id, "shelf": shelf.identifier}
|
||||
|
@ -173,7 +173,7 @@ class ShelfViews(TestCase):
|
|||
self.assertEqual(shelf.books.get(), self.book)
|
||||
|
||||
def test_handle_unshelve(self, _):
|
||||
""" remove a book from a shelf """
|
||||
"""remove a book from a shelf"""
|
||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||
models.ShelfBook.objects.create(
|
||||
book=self.book, user=self.local_user, shelf=self.shelf
|
||||
|
|
|
@ -10,10 +10,10 @@ from bookwyrm.settings import DOMAIN
|
|||
|
||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||
class StatusViews(TestCase):
|
||||
""" viewing and creating statuses """
|
||||
"""viewing and creating statuses"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -43,7 +43,7 @@ class StatusViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_handle_status(self, _):
|
||||
""" create a status """
|
||||
"""create a status"""
|
||||
view = views.CreateStatus.as_view()
|
||||
form = forms.CommentForm(
|
||||
{
|
||||
|
@ -66,7 +66,7 @@ class StatusViews(TestCase):
|
|||
self.assertEqual(status.book, self.book)
|
||||
|
||||
def test_handle_status_reply(self, _):
|
||||
""" create a status in reply to an existing status """
|
||||
"""create a status in reply to an existing status"""
|
||||
view = views.CreateStatus.as_view()
|
||||
user = models.User.objects.create_user(
|
||||
"rat", "rat@rat.com", "password", local=True
|
||||
|
@ -96,7 +96,7 @@ class StatusViews(TestCase):
|
|||
self.assertEqual(models.Notification.objects.get().user, self.local_user)
|
||||
|
||||
def test_handle_status_mentions(self, _):
|
||||
""" @mention a user in a post """
|
||||
"""@mention a user in a post"""
|
||||
view = views.CreateStatus.as_view()
|
||||
user = models.User.objects.create_user(
|
||||
"rat@%s" % DOMAIN, "rat@rat.com", "password", local=True, localname="rat"
|
||||
|
@ -124,7 +124,7 @@ class StatusViews(TestCase):
|
|||
)
|
||||
|
||||
def test_handle_status_reply_with_mentions(self, _):
|
||||
""" reply to a post with an @mention'ed user """
|
||||
"""reply to a post with an @mention'ed user"""
|
||||
view = views.CreateStatus.as_view()
|
||||
user = models.User.objects.create_user(
|
||||
"rat", "rat@rat.com", "password", local=True, localname="rat"
|
||||
|
@ -168,7 +168,7 @@ class StatusViews(TestCase):
|
|||
self.assertTrue(self.local_user in reply.mention_users.all())
|
||||
|
||||
def test_delete_and_redraft(self, _):
|
||||
""" delete and re-draft a status """
|
||||
"""delete and re-draft a status"""
|
||||
view = views.DeleteAndRedraft.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
|
@ -189,7 +189,7 @@ class StatusViews(TestCase):
|
|||
self.assertTrue(status.deleted)
|
||||
|
||||
def test_delete_and_redraft_invalid_status_type_rating(self, _):
|
||||
""" you can't redraft generated statuses """
|
||||
"""you can't redraft generated statuses"""
|
||||
view = views.DeleteAndRedraft.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
|
@ -209,7 +209,7 @@ class StatusViews(TestCase):
|
|||
self.assertFalse(status.deleted)
|
||||
|
||||
def test_delete_and_redraft_invalid_status_type_generated_note(self, _):
|
||||
""" you can't redraft generated statuses """
|
||||
"""you can't redraft generated statuses"""
|
||||
view = views.DeleteAndRedraft.as_view()
|
||||
request = self.factory.post("")
|
||||
request.user = self.local_user
|
||||
|
@ -229,7 +229,7 @@ class StatusViews(TestCase):
|
|||
self.assertFalse(status.deleted)
|
||||
|
||||
def test_find_mentions(self, _):
|
||||
""" detect and look up @ mentions of users """
|
||||
"""detect and look up @ mentions of users"""
|
||||
user = models.User.objects.create_user(
|
||||
"nutria@%s" % DOMAIN,
|
||||
"nutria@nutria.com",
|
||||
|
@ -275,7 +275,7 @@ class StatusViews(TestCase):
|
|||
)
|
||||
|
||||
def test_format_links(self, _):
|
||||
""" find and format urls into a tags """
|
||||
"""find and format urls into a tags"""
|
||||
url = "http://www.fish.com/"
|
||||
self.assertEqual(
|
||||
views.status.format_links(url), '<a href="%s">www.fish.com/</a>' % url
|
||||
|
@ -298,7 +298,7 @@ class StatusViews(TestCase):
|
|||
)
|
||||
|
||||
def test_to_markdown(self, _):
|
||||
""" this is mostly handled in other places, but nonetheless """
|
||||
"""this is mostly handled in other places, but nonetheless"""
|
||||
text = "_hi_ and http://fish.com is <marquee>rad</marquee>"
|
||||
result = views.status.to_markdown(text)
|
||||
self.assertEqual(
|
||||
|
@ -307,13 +307,13 @@ class StatusViews(TestCase):
|
|||
)
|
||||
|
||||
def test_to_markdown_link(self, _):
|
||||
""" this is mostly handled in other places, but nonetheless """
|
||||
"""this is mostly handled in other places, but nonetheless"""
|
||||
text = "[hi](http://fish.com) is <marquee>rad</marquee>"
|
||||
result = views.status.to_markdown(text)
|
||||
self.assertEqual(result, '<p><a href="http://fish.com">hi</a> ' "is rad</p>")
|
||||
|
||||
def test_handle_delete_status(self, mock):
|
||||
""" marks a status as deleted """
|
||||
"""marks a status as deleted"""
|
||||
view = views.DeleteStatus.as_view()
|
||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||
status = models.Status.objects.create(user=self.local_user, content="hi")
|
||||
|
@ -333,7 +333,7 @@ class StatusViews(TestCase):
|
|||
self.assertTrue(status.deleted)
|
||||
|
||||
def test_handle_delete_status_permission_denied(self, _):
|
||||
""" marks a status as deleted """
|
||||
"""marks a status as deleted"""
|
||||
view = views.DeleteStatus.as_view()
|
||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||
status = models.Status.objects.create(user=self.local_user, content="hi")
|
||||
|
@ -347,7 +347,7 @@ class StatusViews(TestCase):
|
|||
self.assertFalse(status.deleted)
|
||||
|
||||
def test_handle_delete_status_moderator(self, mock):
|
||||
""" marks a status as deleted """
|
||||
"""marks a status as deleted"""
|
||||
view = views.DeleteStatus.as_view()
|
||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||
status = models.Status.objects.create(user=self.local_user, content="hi")
|
||||
|
|
|
@ -10,10 +10,10 @@ from bookwyrm import models, views
|
|||
|
||||
|
||||
class UpdateViews(TestCase):
|
||||
""" lets the ui check for unread notification """
|
||||
"""lets the ui check for unread notification"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -25,7 +25,7 @@ class UpdateViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_get_notification_count(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
|
@ -43,7 +43,7 @@ class UpdateViews(TestCase):
|
|||
self.assertEqual(data["count"], 1)
|
||||
|
||||
def test_get_unread_status_count(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
||||
|
|
|
@ -15,10 +15,10 @@ from bookwyrm.activitypub import ActivitypubResponse
|
|||
|
||||
|
||||
class UserViews(TestCase):
|
||||
""" view user and edit profile """
|
||||
"""view user and edit profile"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -43,7 +43,7 @@ class UserViews(TestCase):
|
|||
self.anonymous_user.is_authenticated = False
|
||||
|
||||
def test_user_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.User.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -69,7 +69,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_user_page_blocked(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.User.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -80,7 +80,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(result.status_code, 404)
|
||||
|
||||
def test_followers_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Followers.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -98,7 +98,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_followers_page_blocked(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Followers.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -109,7 +109,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(result.status_code, 404)
|
||||
|
||||
def test_following_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Following.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -127,7 +127,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_following_page_blocked(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.Following.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -138,7 +138,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(result.status_code, 404)
|
||||
|
||||
def test_edit_user_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.EditUser.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -148,7 +148,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_edit_user(self):
|
||||
""" use a form to update a user """
|
||||
"""use a form to update a user"""
|
||||
view = views.EditUser.as_view()
|
||||
form = forms.EditUserForm(instance=self.local_user)
|
||||
form.data["name"] = "New Name"
|
||||
|
@ -168,7 +168,7 @@ class UserViews(TestCase):
|
|||
|
||||
# idk how to mock the upload form, got tired of triyng to make it work
|
||||
def test_edit_user_avatar(self):
|
||||
""" use a form to update a user """
|
||||
"""use a form to update a user"""
|
||||
view = views.EditUser.as_view()
|
||||
form = forms.EditUserForm(instance=self.local_user)
|
||||
form.data["name"] = "New Name"
|
||||
|
@ -195,7 +195,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(self.local_user.avatar.height, 120)
|
||||
|
||||
def test_crop_avatar(self):
|
||||
""" reduce that image size """
|
||||
"""reduce that image size"""
|
||||
image_file = pathlib.Path(__file__).parent.joinpath(
|
||||
"../../static/images/no_cover.jpg"
|
||||
)
|
||||
|
|
|
@ -9,10 +9,10 @@ from bookwyrm import models, views
|
|||
|
||||
|
||||
class UserAdminViews(TestCase):
|
||||
""" every response to a get request, html or json """
|
||||
"""every response to a get request, html or json"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -24,7 +24,7 @@ class UserAdminViews(TestCase):
|
|||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_user_admin_list_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.UserAdminList.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -35,7 +35,7 @@ class UserAdminViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_user_admin_page(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.UserAdmin.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
|
@ -48,7 +48,7 @@ class UserAdminViews(TestCase):
|
|||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_user_admin_page_post(self):
|
||||
""" set the user's group """
|
||||
"""set the user's group"""
|
||||
group = Group.objects.create(name="editor")
|
||||
self.assertEqual(
|
||||
list(self.local_user.groups.values_list("name", flat=True)), []
|
||||
|
|
|
@ -11,10 +11,10 @@ from bookwyrm import models, views
|
|||
|
||||
|
||||
class UserViews(TestCase):
|
||||
""" view user and edit profile """
|
||||
"""view user and edit profile"""
|
||||
|
||||
def setUp(self):
|
||||
""" we need basic test data and mocks """
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
|
@ -41,7 +41,7 @@ class UserViews(TestCase):
|
|||
self.anonymous_user.is_authenticated = False
|
||||
|
||||
def test_webfinger(self):
|
||||
""" there are so many views, this just makes sure it LOADS """
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
request = self.factory.get("", {"resource": "acct:mouse@local.com"})
|
||||
request.user = self.anonymous_user
|
||||
|
||||
|
@ -51,7 +51,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(data["subject"], "acct:mouse@local.com")
|
||||
|
||||
def test_nodeinfo_pointer(self):
|
||||
""" just tells you where nodeinfo is """
|
||||
"""just tells you where nodeinfo is"""
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
||||
|
@ -61,7 +61,7 @@ class UserViews(TestCase):
|
|||
self.assertTrue("href" in data["links"][0])
|
||||
|
||||
def test_nodeinfo(self):
|
||||
""" info about the instance """
|
||||
"""info about the instance"""
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
||||
|
@ -73,7 +73,7 @@ class UserViews(TestCase):
|
|||
self.assertEqual(models.User.objects.count(), 3)
|
||||
|
||||
def test_instanceinfo(self):
|
||||
""" about the instance's user activity """
|
||||
"""about the instance's user activity"""
|
||||
request = self.factory.get("")
|
||||
request.user = self.anonymous_user
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue