From 87434fbb9df733cc9552402cfedc242c4c950cdd Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 6 Jul 2022 10:38:22 -0700 Subject: [PATCH] Adds a couple more edit book views tests --- bookwyrm/tests/views/books/test_edit_book.py | 78 ++++++++++++++++---- 1 file changed, 65 insertions(+), 13 deletions(-) diff --git a/bookwyrm/tests/views/books/test_edit_book.py b/bookwyrm/tests/views/books/test_edit_book.py index c7869807b..1ac8336d8 100644 --- a/bookwyrm/tests/views/books/test_edit_book.py +++ b/bookwyrm/tests/views/books/test_edit_book.py @@ -48,7 +48,7 @@ class EditBookViews(TestCase): models.SiteSettings.objects.create() - def test_edit_book_page(self): + def test_edit_book_get(self): """there are so many views, this just makes sure it LOADS""" view = views.EditBook.as_view() request = self.factory.get("") @@ -59,18 +59,7 @@ class EditBookViews(TestCase): validate_html(result.render()) self.assertEqual(result.status_code, 200) - def test_edit_book_create_page(self): - """there are so many views, this just makes sure it LOADS""" - view = views.CreateBook.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_edit_book(self): + def test_edit_book_post(self): """lets a user edit a book""" view = views.EditBook.as_view() self.local_user.groups.add(self.group) @@ -86,6 +75,23 @@ class EditBookViews(TestCase): self.book.refresh_from_db() self.assertEqual(self.book.title, "New Title") + def test_edit_book_post_invalid(self): + """book form is invalid""" + view = views.EditBook.as_view() + self.local_user.groups.add(self.group) + form = forms.EditionForm(instance=self.book) + form.data["title"] = "" + form.data["last_edited_by"] = self.local_user.id + request = self.factory.post("", form.data) + request.user = self.local_user + + result = view(request, self.book.id) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + # Title is unchanged + self.book.refresh_from_db() + self.assertEqual(self.book.title, "Example Edition") + def test_edit_book_add_author(self): """lets a user edit a book with new authors""" view = views.EditBook.as_view() @@ -234,3 +240,49 @@ class EditBookViews(TestCase): self.assertEqual(len(result["author_matches"]), 2) self.assertEqual(result["author_matches"][0]["name"], "Sappho") self.assertEqual(result["author_matches"][1]["name"], "Some Guy") + + def test_create_book_get(self): + """there are so many views, this just makes sure it LOADS""" + view = views.CreateBook.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_create_book_post_existing_work(self): + """Adding an edition to an existing work""" + author = models.Author.objects.create(name="Sappho") + view = views.CreateBook.as_view() + form = forms.EditionForm() + form.data["title"] = "A Title" + form.data["parent_work"] = self.work.id + form.data["authors"] = [author.id] + form.data["last_edited_by"] = self.local_user.id + request = self.factory.post("", form.data) + request.user = self.local_user + request.user.is_superuser = True + + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + result = view(request) + self.assertEqual(result.status_code, 302) + + new_edition = models.Edition.objects.get(title="A Title") + self.assertEqual(new_edition.parent_work, self.work) + self.assertEqual(new_edition.authors.first(), author) + + def test_create_book_post_invalid(self): + """book form is invalid""" + view = views.CreateBook.as_view() + self.local_user.groups.add(self.group) + form = forms.EditionForm(instance=self.book) + form.data["title"] = "" + form.data["last_edited_by"] = self.local_user.id + request = self.factory.post("", form.data) + request.user = self.local_user + + result = view(request) + validate_html(result.render()) + self.assertEqual(result.status_code, 200)