def test_report_modal_view(self): """a user reports another user""" request = self.factory.get("") request.user = self.local_user result = views.Report.as_view()(request, self.local_user.id) validate_html(result.render())
def test_lists_page(self, _): """there are so many views, this just makes sure it LOADS""" view = views.Lists.as_view() with patch( "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" ), patch("bookwyrm.lists_stream.add_list_task.delay"): models.List.objects.create(name="Public list", user=self.local_user) models.List.objects.create(name="Private list", privacy="direct", user=self.local_user) request = self.factory.get("") request.user = self.local_user result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) request.user = self.anonymous_user result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_embed_call_with_key(self): """there are so many views, this just makes sure it LOADS""" view = views.unsafe_embed_list request = self.factory.get("") request.user = self.anonymous_user with patch( "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" ): models.ListItem.objects.create( book_list=self.list, user=self.local_user, book=self.book, approved=True, order=1, ) embed_key = str(self.list.embed_key.hex) with patch("bookwyrm.views.list.list.is_api_request") as is_api: is_api.return_value = False result = view(request, self.list.id, embed_key) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_status_page_with_image(self, *_): """there are so many views, this just makes sure it LOADS""" view = views.Status.as_view() image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg") image = Image.open(image_file) output = BytesIO() image.save(output, format=image.format) with patch( "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" ): status = models.Review.objects.create( content="hi", user=self.local_user, book=self.book, ) attachment = models.Image.objects.create(status=status, caption="alt text here") attachment.image.save("test.jpg", ContentFile(output.getvalue())) request = self.factory.get("") request.user = self.local_user with patch("bookwyrm.views.feed.is_api_request") as is_api: is_api.return_value = False result = view(request, "mouse", status.id) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) with patch("bookwyrm.views.feed.is_api_request") as is_api: is_api.return_value = True result = view(request, "mouse", status.id) self.assertIsInstance(result, ActivitypubResponse) self.assertEqual(result.status_code, 200)
def test_shelf_page(self, *_): """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("") request.user = self.local_user with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api: is_api.return_value = False result = view(request, self.local_user.username, shelf.identifier) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api: is_api.return_value = True result = view(request, self.local_user.username, shelf.identifier) self.assertIsInstance(result, ActivitypubResponse) self.assertEqual(result.status_code, 200) request = self.factory.get("/?page=1") request.user = self.local_user with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api: is_api.return_value = True result = view(request, self.local_user.username, shelf.identifier) self.assertIsInstance(result, ActivitypubResponse) self.assertEqual(result.status_code, 200)
def test_notifications_page_notifications(self): """there are so many views, this just makes sure it LOADS""" models.Notification.objects.create( user=self.local_user, notification_type="FAVORITE", related_status=self.status, ) models.Notification.objects.create( user=self.local_user, notification_type="BOOST", related_status=self.status, ) models.Notification.objects.create( user=self.local_user, notification_type="MENTION", related_status=self.status, ) self.status.reply_parent = self.status self.status.save(broadcast=False) models.Notification.objects.create( user=self.local_user, notification_type="REPLY", related_status=self.status, ) view = views.Notifications.as_view() request = self.factory.get("") request.user = self.local_user result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_user_page(self): """there are so many views, this just makes sure it LOADS""" # extras that are rendered on the user page models.AnnualGoal.objects.create(user=self.local_user, goal=12, privacy="followers") view = views.User.as_view() request = self.factory.get("") request.user = self.local_user with patch("bookwyrm.views.user.is_api_request") as is_api: is_api.return_value = False result = view(request, "mouse") self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) request.user = self.anonymous_user with patch("bookwyrm.views.user.is_api_request") as is_api: is_api.return_value = False result = view(request, "mouse") self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) with patch("bookwyrm.views.user.is_api_request") as is_api: is_api.return_value = True result = view(request, "mouse") self.assertIsInstance(result, ActivitypubResponse) self.assertEqual(result.status_code, 200)
def test_remote_follow_page(self, *_): """check remote follow page loads""" request = self.factory.get("", {"acct": "*****@*****.**"}) request.user = self.remote_user result = views.remote_follow_page(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_delete_user_page(self, _): """there are so many views, this just makes sure it LOADS""" view = views.DeleteUser.as_view() request = self.factory.get("") request.user = self.local_user result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_remote_follow(self, *_): """check follow from remote page loads""" request = self.factory.post("", {"user": self.remote_user.id}) request.user = self.remote_user request.remote_user = "******" result = views.remote_follow(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_ostatus_follow_success(self, *_): """check remote follow success page loads""" request = self.factory.get("") request.user = self.remote_user request.following = "*****@*****.**" result = views.ostatus_follow_success(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_usergroups_get(self, _): """there are so many views, this just makes sure it LOADS""" view = views.UserGroups.as_view() request = self.factory.get("") request.user = self.local_user result = view(request, username="******") self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_goal_page_no_goal_self(self): """view a reading goal page for your own unset goal""" view = views.Goal.as_view() request = self.factory.get("") request.user = self.local_user result = view(request, self.local_user.localname, self.year) validate_html(result.render()) self.assertIsInstance(result, TemplateResponse)
def test_findusers_get(self, *_): """there are so many views, this just makes sure it LOADS""" view = views.FindUsers.as_view() request = self.factory.get("") request.user = self.local_user result = view(request, group_id=self.testgroup.id) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_ostatus_follow_request(self, *_): """check ostatus subscribe template loads""" request = self.factory.get( "", {"acct": "https%3A%2F%2Fexample.com%2Fusers%2Frat"}) request.user = self.local_user result = views.ostatus_follow_request(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_create_admin_get(self): """there are so many views, this just makes sure it LOADS""" view = views.CreateAdmin.as_view() request = self.factory.get("") result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_password_reset(self): """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("") request.user = self.anonymous_user result = view(request, code.code) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_direct_messages_page_user(self, *_): """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 result = view(request, "nutria") self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) self.assertEqual(result.context_data["partner"], self.another_user)
def test_federation_page(self): """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 request.user.is_superuser = True result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_add_link_page(self): """there are so many views, this just makes sure it LOADS""" view = views.AddFileLink.as_view() request = self.factory.get("") request.user = self.local_user result = view(request, self.book.id) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_password_change_get(self): """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 result = view(request) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_annual_summary_empty_page(self, *_): """there are so many views, this just makes sure it LOADS""" view = views.AnnualSummary.as_view() request = self.factory.get("") request.user = self.local_user result = view(request, self.local_user.localname, self.year) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_password_reset_mismatch(self): """reset from code""" view = views.PasswordReset.as_view() code = models.PasswordReset.objects.create(user=self.local_user) request = self.factory.post("", { "password": "******", "confirm-password": "******" }) resp = view(request, code.code) validate_html(resp.render()) self.assertTrue(models.PasswordReset.objects.exists())
def test_shelf_page_all_books_anonymous(self, *_): """there are so many views, this just makes sure it LOADS""" view = views.Shelf.as_view() request = self.factory.get("") request.user = self.anonymous_user with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api: is_api.return_value = False result = view(request, self.local_user.username) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_book_page_work_id(self): """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 with patch("bookwyrm.views.books.books.is_api_request") as is_api: is_api.return_value = False result = view(request, self.work.id) validate_html(result.render()) self.assertEqual(result.status_code, 200) self.assertEqual(result.context_data["book"], self.book)
def test_shelf_page_all_books_empty(self, *_): """No books shelved""" view = views.Shelf.as_view() request = self.factory.get("") request.user = self.local_user with patch("bookwyrm.views.shelf.shelf.is_api_request") as is_api: is_api.return_value = False result = view(request, self.local_user.username) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_following_page_anonymous(self): """there are so many views, this just makes sure it LOADS""" view = views.Following.as_view() request = self.factory.get("") request.user = self.anonymous_user with patch("bookwyrm.views.user.is_api_request") as is_api: is_api.return_value = False result = view(request, "mouse") self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_import_troubleshoot_get(self): """there are so many views, this just makes sure it LOADS""" view = views.ImportManualReview.as_view() request = self.factory.get("") request.user = self.local_user with patch("bookwyrm.tasks.app.AsyncResult") as async_result: async_result.return_value = [] result = view(request, self.job.id) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)
def test_editions_page(self): """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.editions.is_api_request") as is_api: is_api.return_value = False result = view(request, self.work.id) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) self.assertTrue("paperback" in result.context_data["formats"])
def test_view_announcement(self): """display announcement on other pages""" view = views.User.as_view() request = self.factory.get("") request.user = self.local_user result = view(request, self.local_user.localname) self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200)