Mock mocks mocks
This commit is contained in:
parent
630ee3b766
commit
cbf5747308
|
@ -32,7 +32,7 @@ class ActivitypubMixins(TestCase):
|
||||||
"mouse", "mouse@mouse.com", "mouseword", local=True, localname="mouse"
|
"mouse", "mouse@mouse.com", "mouseword", local=True, localname="mouse"
|
||||||
)
|
)
|
||||||
self.local_user.remote_id = "http://example.com/a/b"
|
self.local_user.remote_id = "http://example.com/a/b"
|
||||||
self.local_user.save(broadcast=False)
|
self.local_user.save(broadcast=False, update_fields=["remote_id"])
|
||||||
with patch("bookwyrm.models.user.set_remote_server.delay"):
|
with patch("bookwyrm.models.user.set_remote_server.delay"):
|
||||||
self.remote_user = models.User.objects.create_user(
|
self.remote_user = models.User.objects.create_user(
|
||||||
"rat",
|
"rat",
|
||||||
|
@ -190,7 +190,7 @@ class ActivitypubMixins(TestCase):
|
||||||
def test_get_recipients_combine_inboxes(self, *_):
|
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.shared_inbox = "http://example.com/inbox"
|
||||||
self.remote_user.save(broadcast=False)
|
self.remote_user.save(broadcast=False, update_fields=["shared_inbox"])
|
||||||
with patch("bookwyrm.models.user.set_remote_server.delay"):
|
with patch("bookwyrm.models.user.set_remote_server.delay"):
|
||||||
another_remote_user = models.User.objects.create_user(
|
another_remote_user = models.User.objects.create_user(
|
||||||
"nutria",
|
"nutria",
|
||||||
|
|
|
@ -24,10 +24,11 @@ from bookwyrm.models.base_model import BookWyrmModel
|
||||||
from bookwyrm.models.activitypub_mixin import ActivitypubMixin
|
from bookwyrm.models.activitypub_mixin import ActivitypubMixin
|
||||||
|
|
||||||
# pylint: disable=too-many-public-methods
|
# pylint: disable=too-many-public-methods
|
||||||
class ActivitypubFields(TestCase):
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
|
class ModelFields(TestCase):
|
||||||
"""overwrites standard model feilds to work with activitypub"""
|
"""overwrites standard model feilds to work with activitypub"""
|
||||||
|
|
||||||
def test_validate_remote_id(self):
|
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("http://www.example.com"))
|
||||||
self.assertIsNone(fields.validate_remote_id("https://www.example.com"))
|
self.assertIsNone(fields.validate_remote_id("https://www.example.com"))
|
||||||
|
@ -44,7 +45,7 @@ class ActivitypubFields(TestCase):
|
||||||
"http://www.example.com/dlfjg 23/x",
|
"http://www.example.com/dlfjg 23/x",
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_activitypub_field_mixin(self):
|
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()
|
instance = fields.ActivitypubFieldMixin()
|
||||||
self.assertEqual(instance.field_to_activity("fish"), "fish")
|
self.assertEqual(instance.field_to_activity("fish"), "fish")
|
||||||
|
@ -62,7 +63,7 @@ class ActivitypubFields(TestCase):
|
||||||
instance.name = "snake_case_name"
|
instance.name = "snake_case_name"
|
||||||
self.assertEqual(instance.get_activitypub_field(), "snakeCaseName")
|
self.assertEqual(instance.get_activitypub_field(), "snakeCaseName")
|
||||||
|
|
||||||
def test_set_field_from_activity(self):
|
def test_set_field_from_activity(self, _):
|
||||||
"""setter from entire json blob"""
|
"""setter from entire json blob"""
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -81,7 +82,7 @@ class ActivitypubFields(TestCase):
|
||||||
instance.set_field_from_activity(mock_model, data)
|
instance.set_field_from_activity(mock_model, data)
|
||||||
self.assertEqual(mock_model.field_name, "hi")
|
self.assertEqual(mock_model.field_name, "hi")
|
||||||
|
|
||||||
def test_set_activity_from_field(self):
|
def test_set_activity_from_field(self, _):
|
||||||
"""set json field given entire model"""
|
"""set json field given entire model"""
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -99,7 +100,7 @@ class ActivitypubFields(TestCase):
|
||||||
instance.set_activity_from_field(data, mock_model)
|
instance.set_activity_from_field(data, mock_model)
|
||||||
self.assertEqual(data["fieldName"], "bip")
|
self.assertEqual(data["fieldName"], "bip")
|
||||||
|
|
||||||
def test_remote_id_field(self):
|
def test_remote_id_field(self, _):
|
||||||
"""just sets some defaults on charfield"""
|
"""just sets some defaults on charfield"""
|
||||||
instance = fields.RemoteIdField()
|
instance = fields.RemoteIdField()
|
||||||
self.assertEqual(instance.max_length, 255)
|
self.assertEqual(instance.max_length, 255)
|
||||||
|
@ -108,7 +109,7 @@ class ActivitypubFields(TestCase):
|
||||||
with self.assertRaises(ValidationError):
|
with self.assertRaises(ValidationError):
|
||||||
instance.run_validators("http://www.example.com/dlfjg 23/x")
|
instance.run_validators("http://www.example.com/dlfjg 23/x")
|
||||||
|
|
||||||
def test_username_field(self):
|
def test_username_field(self, _):
|
||||||
"""again, just setting defaults on username field"""
|
"""again, just setting defaults on username field"""
|
||||||
instance = fields.UsernameField()
|
instance = fields.UsernameField()
|
||||||
self.assertEqual(instance.activitypub_field, "preferredUsername")
|
self.assertEqual(instance.activitypub_field, "preferredUsername")
|
||||||
|
@ -129,7 +130,7 @@ class ActivitypubFields(TestCase):
|
||||||
|
|
||||||
self.assertEqual(instance.field_to_activity("test@example.com"), "test")
|
self.assertEqual(instance.field_to_activity("test@example.com"), "test")
|
||||||
|
|
||||||
def test_privacy_field_defaults(self):
|
def test_privacy_field_defaults(self, _):
|
||||||
"""post privacy field's many default values"""
|
"""post privacy field's many default values"""
|
||||||
instance = fields.PrivacyField()
|
instance = fields.PrivacyField()
|
||||||
self.assertEqual(instance.max_length, 255)
|
self.assertEqual(instance.max_length, 255)
|
||||||
|
@ -142,7 +143,7 @@ class ActivitypubFields(TestCase):
|
||||||
instance.public, "https://www.w3.org/ns/activitystreams#Public"
|
instance.public, "https://www.w3.org/ns/activitystreams#Public"
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_privacy_field_set_field_from_activity(self):
|
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)
|
@dataclass(init=False)
|
||||||
|
@ -186,7 +187,6 @@ class ActivitypubFields(TestCase):
|
||||||
|
|
||||||
@patch("bookwyrm.models.activitypub_mixin.ObjectMixin.broadcast")
|
@patch("bookwyrm.models.activitypub_mixin.ObjectMixin.broadcast")
|
||||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||||
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
|
||||||
def test_privacy_field_set_activity_from_field(self, *_):
|
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(
|
user = User.objects.create_user(
|
||||||
|
@ -231,7 +231,7 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertEqual(activity["to"], [user.remote_id])
|
self.assertEqual(activity["to"], [user.remote_id])
|
||||||
self.assertEqual(activity["cc"], [])
|
self.assertEqual(activity["cc"], [])
|
||||||
|
|
||||||
def test_foreign_key(self):
|
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)
|
instance = fields.ForeignKey("User", on_delete=models.CASCADE)
|
||||||
Serializable = namedtuple("Serializable", ("to_activity", "remote_id"))
|
Serializable = namedtuple("Serializable", ("to_activity", "remote_id"))
|
||||||
|
@ -240,7 +240,7 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertEqual(instance.field_to_activity(item), "https://e.b/c")
|
self.assertEqual(instance.field_to_activity(item), "https://e.b/c")
|
||||||
|
|
||||||
@responses.activate
|
@responses.activate
|
||||||
def test_foreign_key_from_activity_str(self):
|
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)
|
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
||||||
|
@ -267,7 +267,7 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertEqual(value.remote_id, "https://example.com/user/mouse")
|
self.assertEqual(value.remote_id, "https://example.com/user/mouse")
|
||||||
self.assertEqual(value.name, "MOUSE?? MOUSE!!")
|
self.assertEqual(value.name, "MOUSE?? MOUSE!!")
|
||||||
|
|
||||||
def test_foreign_key_from_activity_dict(self):
|
def test_foreign_key_from_activity_dict(self, *_):
|
||||||
"""test recieving activity json"""
|
"""test recieving activity json"""
|
||||||
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
|
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
||||||
|
@ -287,7 +287,7 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertEqual(value.name, "MOUSE?? MOUSE!!")
|
self.assertEqual(value.name, "MOUSE?? MOUSE!!")
|
||||||
# et cetera but we're not testing serializing user json
|
# et cetera but we're not testing serializing user json
|
||||||
|
|
||||||
def test_foreign_key_from_activity_dict_existing(self):
|
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)
|
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
||||||
|
@ -296,7 +296,7 @@ class ActivitypubFields(TestCase):
|
||||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||||
)
|
)
|
||||||
user.remote_id = "https://example.com/user/mouse"
|
user.remote_id = "https://example.com/user/mouse"
|
||||||
user.save(broadcast=False)
|
user.save(broadcast=False, update_fields=["remote_id"])
|
||||||
|
|
||||||
User.objects.create_user(
|
User.objects.create_user(
|
||||||
"rat", "rat@rat.rat", "ratword", local=True, localname="rat"
|
"rat", "rat@rat.rat", "ratword", local=True, localname="rat"
|
||||||
|
@ -306,7 +306,7 @@ class ActivitypubFields(TestCase):
|
||||||
value = instance.field_from_activity(activitypub.Person(**userdata))
|
value = instance.field_from_activity(activitypub.Person(**userdata))
|
||||||
self.assertEqual(value, user)
|
self.assertEqual(value, user)
|
||||||
|
|
||||||
def test_foreign_key_from_activity_str_existing(self):
|
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)
|
instance = fields.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
user = User.objects.create_user(
|
user = User.objects.create_user(
|
||||||
|
@ -319,14 +319,14 @@ class ActivitypubFields(TestCase):
|
||||||
value = instance.field_from_activity(user.remote_id)
|
value = instance.field_from_activity(user.remote_id)
|
||||||
self.assertEqual(value, user)
|
self.assertEqual(value, user)
|
||||||
|
|
||||||
def test_one_to_one_field(self):
|
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)
|
instance = fields.OneToOneField("User", on_delete=models.CASCADE)
|
||||||
Serializable = namedtuple("Serializable", ("to_activity", "remote_id"))
|
Serializable = namedtuple("Serializable", ("to_activity", "remote_id"))
|
||||||
item = Serializable(lambda: {"a": "b"}, "https://e.b/c")
|
item = Serializable(lambda: {"a": "b"}, "https://e.b/c")
|
||||||
self.assertEqual(instance.field_to_activity(item), {"a": "b"})
|
self.assertEqual(instance.field_to_activity(item), {"a": "b"})
|
||||||
|
|
||||||
def test_many_to_many_field(self):
|
def test_many_to_many_field(self, _):
|
||||||
"""lists!"""
|
"""lists!"""
|
||||||
instance = fields.ManyToManyField("User")
|
instance = fields.ManyToManyField("User")
|
||||||
|
|
||||||
|
@ -344,7 +344,7 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertEqual(instance.field_to_activity(items), "example.com/snake_case")
|
self.assertEqual(instance.field_to_activity(items), "example.com/snake_case")
|
||||||
|
|
||||||
@responses.activate
|
@responses.activate
|
||||||
def test_many_to_many_field_from_activity(self):
|
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)
|
instance = fields.ManyToManyField(User)
|
||||||
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_user.json")
|
||||||
|
@ -364,7 +364,7 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertEqual(len(value), 1)
|
self.assertEqual(len(value), 1)
|
||||||
self.assertIsInstance(value[0], User)
|
self.assertIsInstance(value[0], User)
|
||||||
|
|
||||||
def test_tag_field(self):
|
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")
|
instance = fields.TagField("User")
|
||||||
|
|
||||||
|
@ -383,13 +383,14 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertEqual(result[0].name, "Name")
|
self.assertEqual(result[0].name, "Name")
|
||||||
self.assertEqual(result[0].type, "Serializable")
|
self.assertEqual(result[0].type, "Serializable")
|
||||||
|
|
||||||
def test_tag_field_from_activity(self):
|
def test_tag_field_from_activity(self, _):
|
||||||
"""loadin' a list of items from Links"""
|
"""loadin' a list of items from Links"""
|
||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
@responses.activate
|
@responses.activate
|
||||||
@patch("bookwyrm.models.activitypub_mixin.ObjectMixin.broadcast")
|
@patch("bookwyrm.models.activitypub_mixin.ObjectMixin.broadcast")
|
||||||
def test_image_field(self, _):
|
@patch("bookwyrm.suggested_users.remove_user_task.delay")
|
||||||
|
def test_image_field(self, *_):
|
||||||
"""storing images"""
|
"""storing images"""
|
||||||
user = User.objects.create_user(
|
user = User.objects.create_user(
|
||||||
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
"mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse"
|
||||||
|
@ -427,7 +428,7 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertIsInstance(loaded_image, list)
|
self.assertIsInstance(loaded_image, list)
|
||||||
self.assertIsInstance(loaded_image[1], ContentFile)
|
self.assertIsInstance(loaded_image[1], ContentFile)
|
||||||
|
|
||||||
def test_image_serialize(self):
|
def test_image_serialize(self, _):
|
||||||
"""make sure we're creating sensible image paths"""
|
"""make sure we're creating sensible image paths"""
|
||||||
ValueMock = namedtuple("ValueMock", ("url"))
|
ValueMock = namedtuple("ValueMock", ("url"))
|
||||||
value_mock = ValueMock("/images/fish.jpg")
|
value_mock = ValueMock("/images/fish.jpg")
|
||||||
|
@ -436,7 +437,7 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertEqual(result.url, "https://your.domain.here/images/fish.jpg")
|
self.assertEqual(result.url, "https://your.domain.here/images/fish.jpg")
|
||||||
self.assertEqual(result.name, "hello")
|
self.assertEqual(result.name, "hello")
|
||||||
|
|
||||||
def test_datetime_field(self):
|
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()
|
instance = fields.DateTimeField()
|
||||||
now = timezone.now()
|
now = timezone.now()
|
||||||
|
@ -444,12 +445,12 @@ class ActivitypubFields(TestCase):
|
||||||
self.assertEqual(instance.field_from_activity(now.isoformat()), now)
|
self.assertEqual(instance.field_from_activity(now.isoformat()), now)
|
||||||
self.assertEqual(instance.field_from_activity("bip"), None)
|
self.assertEqual(instance.field_from_activity("bip"), None)
|
||||||
|
|
||||||
def test_array_field(self):
|
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)
|
instance = fields.ArrayField(fields.IntegerField)
|
||||||
self.assertEqual(instance.field_to_activity([0, 1]), ["0", "1"])
|
self.assertEqual(instance.field_to_activity([0, 1]), ["0", "1"])
|
||||||
|
|
||||||
def test_html_field(self):
|
def test_html_field(self, _):
|
||||||
"""sanitizes html, the sanitizer has its own tests"""
|
"""sanitizes html, the sanitizer has its own tests"""
|
||||||
instance = fields.HtmlField()
|
instance = fields.HtmlField()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|
|
@ -13,6 +13,7 @@ from bookwyrm.suggested_users import suggested_users, get_annotated_users
|
||||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||||
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
@patch("bookwyrm.suggested_users.rerank_user_task.delay")
|
@patch("bookwyrm.suggested_users.rerank_user_task.delay")
|
||||||
|
@patch("bookwyrm.suggested_users.remove_user_task.delay")
|
||||||
class SuggestedUsers(TestCase):
|
class SuggestedUsers(TestCase):
|
||||||
"""using redis to build activity streams"""
|
"""using redis to build activity streams"""
|
||||||
|
|
||||||
|
@ -22,7 +23,6 @@ class SuggestedUsers(TestCase):
|
||||||
self.local_user = models.User.objects.create_user(
|
self.local_user = models.User.objects.create_user(
|
||||||
"mouse", "mouse@mouse.mouse", "password", local=True, localname="mouse"
|
"mouse", "mouse@mouse.mouse", "password", local=True, localname="mouse"
|
||||||
)
|
)
|
||||||
self.book = models.Edition.objects.create(title="test book")
|
|
||||||
|
|
||||||
def test_get_rank(self, *_):
|
def test_get_rank(self, *_):
|
||||||
"""a float that reflects both the mutuals count and shared books"""
|
"""a float that reflects both the mutuals count and shared books"""
|
||||||
|
@ -97,7 +97,12 @@ class SuggestedUsers(TestCase):
|
||||||
"fishword",
|
"fishword",
|
||||||
local=True,
|
local=True,
|
||||||
localname="fish",
|
localname="fish",
|
||||||
discoverable=True,
|
)
|
||||||
|
work = models.Work.objects.create(title="Test Work")
|
||||||
|
book = models.Edition.objects.create(
|
||||||
|
title="Test Book",
|
||||||
|
remote_id="https://example.com/book/1",
|
||||||
|
parent_work=work,
|
||||||
)
|
)
|
||||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||||
# 1 shared follow
|
# 1 shared follow
|
||||||
|
@ -107,28 +112,22 @@ class SuggestedUsers(TestCase):
|
||||||
# 1 shared book
|
# 1 shared book
|
||||||
models.ShelfBook.objects.create(
|
models.ShelfBook.objects.create(
|
||||||
user=self.local_user,
|
user=self.local_user,
|
||||||
book=self.book,
|
book=book,
|
||||||
shelf=self.local_user.shelf_set.first(),
|
shelf=self.local_user.shelf_set.first(),
|
||||||
)
|
)
|
||||||
models.ShelfBook.objects.create(
|
models.ShelfBook.objects.create(
|
||||||
user=user_1, book=self.book, shelf=user_1.shelf_set.first()
|
user=user_1, book=book, shelf=user_1.shelf_set.first()
|
||||||
)
|
)
|
||||||
|
|
||||||
result = get_annotated_users(self.local_user)
|
result = get_annotated_users(self.local_user)
|
||||||
self.assertEqual(result.count(), 2)
|
self.assertEqual(result.count(), 1)
|
||||||
self.assertTrue(user_1 in result)
|
self.assertTrue(user_1 in result)
|
||||||
self.assertFalse(user_2 in result)
|
self.assertFalse(user_2 in result)
|
||||||
self.assertTrue(self.local_user in result)
|
|
||||||
self.assertTrue(self.remote_user in result)
|
|
||||||
|
|
||||||
user_1_annotated = result.get(id=user_1.id)
|
user_1_annotated = result.get(id=user_1.id)
|
||||||
self.assertEqual(user_1_annotated.mutuals, 1)
|
self.assertEqual(user_1_annotated.mutuals, 1)
|
||||||
self.assertEqual(user_1_annotated.shared_books, 1)
|
self.assertEqual(user_1_annotated.shared_books, 1)
|
||||||
|
|
||||||
remote_user_annotated = result.get(id=self.remote_user.id)
|
|
||||||
self.assertEqual(remote_user_annotated.mutuals, 0)
|
|
||||||
self.assertEqual(remote_user_annotated.shared_books, 0)
|
|
||||||
|
|
||||||
def test_get_annotated_users_counts(self, *_):
|
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(
|
user_1 = models.User.objects.create_user(
|
||||||
|
@ -170,6 +169,5 @@ class SuggestedUsers(TestCase):
|
||||||
~Q(id=self.local_user.id),
|
~Q(id=self.local_user.id),
|
||||||
~Q(followers=self.local_user),
|
~Q(followers=self.local_user),
|
||||||
)
|
)
|
||||||
self.assertEqual(result.count(), 2)
|
|
||||||
user_1_annotated = result.get(id=user_1.id)
|
user_1_annotated = result.get(id=user_1.id)
|
||||||
self.assertEqual(user_1_annotated.mutuals, 3)
|
self.assertEqual(user_1_annotated.mutuals, 3)
|
||||||
|
|
|
@ -201,7 +201,8 @@ class BookViews(TestCase):
|
||||||
self.assertEqual(book.authors.first().name, "Sappho")
|
self.assertEqual(book.authors.first().name, "Sappho")
|
||||||
self.assertEqual(book.authors.first(), book.parent_work.authors.first())
|
self.assertEqual(book.authors.first(), book.parent_work.authors.first())
|
||||||
|
|
||||||
def test_switch_edition(self):
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
|
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")
|
work = models.Work.objects.create(title="test work")
|
||||||
edition1 = models.Edition.objects.create(title="first ed", parent_work=work)
|
edition1 = models.Edition.objects.create(title="first ed", parent_work=work)
|
||||||
|
|
|
@ -69,7 +69,7 @@ class FederationViews(TestCase):
|
||||||
identifier="hi.there.com",
|
identifier="hi.there.com",
|
||||||
)
|
)
|
||||||
self.remote_user.federated_server = server
|
self.remote_user.federated_server = server
|
||||||
self.remote_user.save()
|
self.remote_user.save(update_fields=["federated_server"])
|
||||||
|
|
||||||
self.assertEqual(server.status, "federated")
|
self.assertEqual(server.status, "federated")
|
||||||
|
|
||||||
|
@ -108,7 +108,9 @@ class FederationViews(TestCase):
|
||||||
self.remote_user.federated_server = server
|
self.remote_user.federated_server = server
|
||||||
self.remote_user.is_active = False
|
self.remote_user.is_active = False
|
||||||
self.remote_user.deactivation_reason = "domain_block"
|
self.remote_user.deactivation_reason = "domain_block"
|
||||||
self.remote_user.save()
|
self.remote_user.save(
|
||||||
|
update_fields=["federated_server", "is_active", "deactivation_reason"]
|
||||||
|
)
|
||||||
|
|
||||||
request = self.factory.post("")
|
request = self.factory.post("")
|
||||||
request.user = self.local_user
|
request.user = self.local_user
|
||||||
|
|
|
@ -16,6 +16,8 @@ from bookwyrm.activitypub import ActivitypubResponse
|
||||||
|
|
||||||
@patch("bookwyrm.activitystreams.ActivityStream.get_activity_stream")
|
@patch("bookwyrm.activitystreams.ActivityStream.get_activity_stream")
|
||||||
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
@patch("bookwyrm.activitystreams.ActivityStream.add_status")
|
||||||
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
|
@patch("bookwyrm.suggested_users.remove_user_task.delay")
|
||||||
class FeedViews(TestCase):
|
class FeedViews(TestCase):
|
||||||
"""activity feed, statuses, dms"""
|
"""activity feed, statuses, dms"""
|
||||||
|
|
||||||
|
|
|
@ -130,7 +130,9 @@ class FollowViews(TestCase):
|
||||||
def test_handle_accept(self):
|
def test_handle_accept(self):
|
||||||
"""accept a follow request"""
|
"""accept a follow request"""
|
||||||
self.local_user.manually_approves_followers = True
|
self.local_user.manually_approves_followers = True
|
||||||
self.local_user.save(broadcast=False)
|
self.local_user.save(
|
||||||
|
broadcast=False, update_fields=["manually_approves_followers"]
|
||||||
|
)
|
||||||
request = self.factory.post("", {"user": self.remote_user.username})
|
request = self.factory.post("", {"user": self.remote_user.username})
|
||||||
request.user = self.local_user
|
request.user = self.local_user
|
||||||
rel = models.UserFollowRequest.objects.create(
|
rel = models.UserFollowRequest.objects.create(
|
||||||
|
@ -147,7 +149,9 @@ class FollowViews(TestCase):
|
||||||
def test_handle_reject(self):
|
def test_handle_reject(self):
|
||||||
"""reject a follow request"""
|
"""reject a follow request"""
|
||||||
self.local_user.manually_approves_followers = True
|
self.local_user.manually_approves_followers = True
|
||||||
self.local_user.save(broadcast=False)
|
self.local_user.save(
|
||||||
|
broadcast=False, update_fields=["manually_approves_followers"]
|
||||||
|
)
|
||||||
request = self.factory.post("", {"user": self.remote_user.username})
|
request = self.factory.post("", {"user": self.remote_user.username})
|
||||||
request.user = self.local_user
|
request.user = self.local_user
|
||||||
rel = models.UserFollowRequest.objects.create(
|
rel = models.UserFollowRequest.objects.create(
|
||||||
|
|
|
@ -43,7 +43,9 @@ class GetStartedViews(TestCase):
|
||||||
result.render()
|
result.render()
|
||||||
self.assertEqual(result.status_code, 200)
|
self.assertEqual(result.status_code, 200)
|
||||||
|
|
||||||
def test_profile_view_post(self):
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
|
@patch("bookwyrm.suggested_users.rerank_user_task.delay")
|
||||||
|
def test_profile_view_post(self, *_):
|
||||||
"""save basic user details"""
|
"""save basic user details"""
|
||||||
view = views.GetStartedProfile.as_view()
|
view = views.GetStartedProfile.as_view()
|
||||||
form = forms.LimitedEditUserForm(instance=self.local_user)
|
form = forms.LimitedEditUserForm(instance=self.local_user)
|
||||||
|
@ -85,7 +87,8 @@ class GetStartedViews(TestCase):
|
||||||
result.render()
|
result.render()
|
||||||
self.assertEqual(result.status_code, 200)
|
self.assertEqual(result.status_code, 200)
|
||||||
|
|
||||||
def test_books_view_post(self):
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
|
def test_books_view_post(self, _):
|
||||||
"""shelve some books"""
|
"""shelve some books"""
|
||||||
view = views.GetStartedBooks.as_view()
|
view = views.GetStartedBooks.as_view()
|
||||||
data = {self.book.id: self.local_user.shelf_set.first().id}
|
data = {self.book.id: self.local_user.shelf_set.first().id}
|
||||||
|
|
|
@ -7,6 +7,7 @@ from django.utils import timezone
|
||||||
from bookwyrm import models
|
from bookwyrm import models
|
||||||
|
|
||||||
|
|
||||||
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||||
class ReadThrough(TestCase):
|
class ReadThrough(TestCase):
|
||||||
"""readthrough tests"""
|
"""readthrough tests"""
|
||||||
|
@ -29,7 +30,7 @@ class ReadThrough(TestCase):
|
||||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||||
self.client.force_login(self.user)
|
self.client.force_login(self.user)
|
||||||
|
|
||||||
def test_create_basic_readthrough(self, delay_mock):
|
def test_create_basic_readthrough(self, delay_mock, _):
|
||||||
"""A basic readthrough doesn't create a progress update"""
|
"""A basic readthrough doesn't create a progress update"""
|
||||||
self.assertEqual(self.edition.readthrough_set.count(), 0)
|
self.assertEqual(self.edition.readthrough_set.count(), 0)
|
||||||
|
|
||||||
|
@ -50,7 +51,7 @@ class ReadThrough(TestCase):
|
||||||
self.assertEqual(readthroughs[0].finish_date, None)
|
self.assertEqual(readthroughs[0].finish_date, None)
|
||||||
self.assertEqual(delay_mock.call_count, 1)
|
self.assertEqual(delay_mock.call_count, 1)
|
||||||
|
|
||||||
def test_create_progress_readthrough(self, delay_mock):
|
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.assertEqual(self.edition.readthrough_set.count(), 0)
|
||||||
|
|
||||||
|
|
|
@ -117,7 +117,8 @@ class ReportViews(TestCase):
|
||||||
self.assertFalse(report.resolved)
|
self.assertFalse(report.resolved)
|
||||||
|
|
||||||
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
def test_suspend_user(self):
|
@patch("bookwyrm.suggested_users.remove_user_task.delay")
|
||||||
|
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)
|
self.assertTrue(self.rat.is_active)
|
||||||
request = self.factory.post("")
|
request = self.factory.post("")
|
||||||
|
|
|
@ -9,8 +9,8 @@ from bookwyrm.settings import DOMAIN
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=invalid-name
|
# pylint: disable=invalid-name
|
||||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
|
||||||
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
|
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay")
|
||||||
class StatusViews(TestCase):
|
class StatusViews(TestCase):
|
||||||
"""viewing and creating statuses"""
|
"""viewing and creating statuses"""
|
||||||
|
|
||||||
|
@ -328,7 +328,7 @@ class StatusViews(TestCase):
|
||||||
result = views.status.to_markdown(text)
|
result = views.status.to_markdown(text)
|
||||||
self.assertEqual(result, '<p><a href="http://fish.com">hi</a> ' "is rad</p>")
|
self.assertEqual(result, '<p><a href="http://fish.com">hi</a> ' "is rad</p>")
|
||||||
|
|
||||||
def test_handle_delete_status(self, mock):
|
def test_handle_delete_status(self, mock, *_):
|
||||||
"""marks a status as deleted"""
|
"""marks a status as deleted"""
|
||||||
view = views.DeleteStatus.as_view()
|
view = views.DeleteStatus.as_view()
|
||||||
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
with patch("bookwyrm.activitystreams.ActivityStream.add_status"):
|
||||||
|
|
|
@ -30,6 +30,7 @@ class UserViews(TestCase):
|
||||||
)
|
)
|
||||||
self.book = models.Edition.objects.create(title="test")
|
self.book = models.Edition.objects.create(title="test")
|
||||||
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||||
|
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"):
|
||||||
models.ShelfBook.objects.create(
|
models.ShelfBook.objects.create(
|
||||||
book=self.book,
|
book=self.book,
|
||||||
user=self.local_user,
|
user=self.local_user,
|
||||||
|
@ -95,7 +96,8 @@ class UserViews(TestCase):
|
||||||
self.assertIsInstance(result, ActivitypubResponse)
|
self.assertIsInstance(result, ActivitypubResponse)
|
||||||
self.assertEqual(result.status_code, 200)
|
self.assertEqual(result.status_code, 200)
|
||||||
|
|
||||||
def test_followers_page_blocked(self):
|
@patch("bookwyrm.suggested_users.rerank_suggestions_task.delay")
|
||||||
|
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()
|
view = views.Followers.as_view()
|
||||||
request = self.factory.get("")
|
request = self.factory.get("")
|
||||||
|
|
Loading…
Reference in New Issue