def post(self, request, author_id): """edit a author cool""" author = get_object_or_404(models.Author, id=author_id) form = forms.AuthorForm(request.POST, request.FILES, instance=author) if not form.is_valid(): data = {"author": author, "form": form} return TemplateResponse(request, "author/edit_author.html", data) author = form.save() return redirect(f"/author/{author.id}")
def test_edit_author_non_editor(self): ''' 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) form.data['name'] = 'New Name' form.data['last_edited_by'] = self.local_user.id request = self.factory.post('', form.data) request.user = self.local_user with self.assertRaises(PermissionDenied): view(request, author.id) author.refresh_from_db() self.assertEqual(author.name, 'Test Author')
def test_edit_author_non_editor(self): """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) form.data["name"] = "New Name" form.data["last_edited_by"] = self.local_user.id request = self.factory.post("", form.data) request.user = self.local_user with self.assertRaises(PermissionDenied): view(request, author.id) author.refresh_from_db() self.assertEqual(author.name, "Test Author")
def test_edit_author(self): ''' edit an author ''' view = views.EditAuthor.as_view() author = models.Author.objects.create(name='Test Author') self.local_user.groups.add(self.group) form = forms.AuthorForm(instance=author) form.data['name'] = 'New Name' form.data['last_edited_by'] = self.local_user.id request = self.factory.post('', form.data) request.user = self.local_user with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'): view(request, author.id) author.refresh_from_db() self.assertEqual(author.name, 'New Name') self.assertEqual(author.last_edited_by, self.local_user)
def test_edit_author_invalid_form(self): ''' 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) form = forms.AuthorForm(instance=author) form.data['name'] = '' form.data['last_edited_by'] = self.local_user.id request = self.factory.post('', form.data) request.user = self.local_user resp = view(request, author.id) author.refresh_from_db() self.assertEqual(author.name, 'Test Author') resp.render() self.assertEqual(resp.status_code, 200)
def test_edit_author(self): """edit an author""" view = views.EditAuthor.as_view() author = models.Author.objects.create(name="Test Author") self.local_user.groups.add(self.group) form = forms.AuthorForm(instance=author) form.data["name"] = "New Name" form.data["last_edited_by"] = self.local_user.id request = self.factory.post("", form.data) request.user = self.local_user with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): view(request, author.id) author.refresh_from_db() self.assertEqual(author.name, "New Name") self.assertEqual(author.last_edited_by, self.local_user)
def test_edit_author_invalid_form(self): """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) form = forms.AuthorForm(instance=author) form.data["name"] = "" form.data["last_edited_by"] = self.local_user.id request = self.factory.post("", form.data) request.user = self.local_user resp = view(request, author.id) author.refresh_from_db() self.assertEqual(author.name, "Test Author") resp.render() self.assertEqual(resp.status_code, 200)
def get(self, request, author_id): """info about a book""" author = get_object_or_404(models.Author, id=author_id) data = {"author": author, "form": forms.AuthorForm(instance=author)} return TemplateResponse(request, "author/edit_author.html", data)