diff --git a/flangr/posts/tests.py b/flangr/posts/tests.py index 64d4cbb..57b981f 100644 --- a/flangr/posts/tests.py +++ b/flangr/posts/tests.py @@ -46,7 +46,7 @@ class ModelTests(TestCase): class PostViewsTests(TestCase): def setUp(self): - self.user = get_user_model().objects.create( + self.user = get_user_model().objects.create_user( email="someone@example.com", username="someone", password="secret", @@ -68,17 +68,20 @@ class PostViewsTests(TestCase): def test_anon_cant_see_post(self): c = Client() url = reverse("posts:post_detail", kwargs={"pk": self.post.pk}) - response = c.get(url) - self.assertRedirects(response, settings.LOGIN_URL) + with self.settings(LOGIN_URL="/loginurl/"): + response = c.get(url) + self.assertRedirects( + response, f"/loginurl/?next={url}", fetch_redirect_response=False + ) def test_logged_in_other_user_cant_see_post(self): - get_user_model().objects.create( + get_user_model().objects.create_user( email="someone2@example.com", username="foobar", password="secret", ) c = Client() - c.login(username="foobar", password="foobar") + c.login(username="foobar", password="secret") url = reverse("posts:post_detail", kwargs={"pk": self.post.pk}) response = c.get(url) self.assertEqual(response.status_code, 404) @@ -89,3 +92,17 @@ class PostViewsTests(TestCase): url = reverse("posts:post_detail", kwargs={"pk": self.post.pk}) response = c.get(url) self.assertEqual(response.status_code, 200) + + def test_can_post_a_comment(self): + c = Client() + c.login(username="someone", password="secret") + url = reverse("posts:post_detail", kwargs={"pk": self.post.pk}) + c.post(url, {"comment": "some comment"}) + self.assertTrue(self.post.comments.filter(comment="some comment").exists()) + + def test_posting_a_comment_requires_a_comment(self): + c = Client() + c.login(username="someone", password="secret") + url = reverse("posts:post_detail", kwargs={"pk": self.post.pk}) + c.post(url, {"comment": ""}) + self.assertFalse(self.post.comments.all().exists()) diff --git a/flangr/posts/views.py b/flangr/posts/views.py index f9fb795..4e867aa 100644 --- a/flangr/posts/views.py +++ b/flangr/posts/views.py @@ -22,10 +22,13 @@ class PostDetailView(LoginRequiredMixin, DetailView, ModelFormMixin): comment.save() return HttpResponseRedirect(self.get_success_url()) + def get_queryset(self): + return Post.objects.filter(user=self.request.user) + def post(self, request, *args, **kwargs): self.object = self.get_object() form = self.form_class(request.POST) - if form.is_valid: + if form.is_valid(): return self.form_valid(form) else: return self.form_invalid(form) diff --git a/flangr/templates/registration/login.html b/flangr/templates/registration/login.html new file mode 100644 index 0000000..e69de29