From e139ae9461390ec2754df5f495cd2e87fb7cef10 Mon Sep 17 00:00:00 2001 From: vincent porte Date: Mon, 3 Jul 2023 17:10:48 +0200 Subject: [PATCH] wip test --- .../forum_conversation/tests/tests_views.py | 104 +++++++++--------- 1 file changed, 54 insertions(+), 50 deletions(-) diff --git a/lacommunaute/forum_conversation/tests/tests_views.py b/lacommunaute/forum_conversation/tests/tests_views.py index 3e7133591..32ae7a5f3 100644 --- a/lacommunaute/forum_conversation/tests/tests_views.py +++ b/lacommunaute/forum_conversation/tests/tests_views.py @@ -280,8 +280,6 @@ def test_machina_route_forbidden(self): self.assertEqual(response.status_code, 403) -# @patch("machina.apps.forum.views.ForumView.perform_permissions_check", return_value=True) -# @patch("machina.apps.forum_permission.handler.PermissionHandler.can_edit_post", return_value=True) class PostUpdateViewTest(TestCase): @classmethod def setUpTestData(cls): @@ -526,25 +524,26 @@ def test_has_liked(self): self.assertContains(response, '1') def test_queryset(self): - answered_topic = TopicFactory(with_post=True, forum=self.forum) - PostFactory(topic=answered_topic) - certified_topic = TopicFactory(with_post=True, with_certified_post=True, forum=self.forum) - - nonreadable_forum = ForumFactory(kind=ForumKind.PRIVATE_FORUM) - nonreadable_topic = TopicFactory(with_post=True, forum=nonreadable_forum) - - self.client.force_login(self.user) + TopicFactory(with_post=True, forum=ForumFactory(kind=ForumKind.PRIVATE_FORUM, with_public_perms=True)) + TopicFactory(with_post=True, forum=ForumFactory(kind=ForumKind.NEWS, with_public_perms=True)) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) - self.assertEqual(response.context_data["total"], 3) - self.assertNotContains(response, nonreadable_topic.subject) + self.assertEqual(response.context_data["total"], 1) - for topic in Topic.objects.filter(forum=self.forum): + for topic in Topic.objects.exclude(id=self.topic.id): + with self.subTest(topic): + self.assertNotContains(response, topic.subject) + + for topic in Topic.objects.filter(id=self.topic.id): with self.subTest(topic): self.assertContains(response, topic.subject) + def test_queryset_for_unanswered_topic(self): + TopicFactory(with_post=True, forum=ForumFactory(kind=ForumKind.PRIVATE_FORUM, with_public_perms=True)) + TopicFactory(with_post=True, forum=ForumFactory(kind=ForumKind.NEWS, with_public_perms=True)) + response = self.client.get(self.url + "?filter=NEW") self.assertEqual(response.status_code, 200) self.assertEqual(response.context_data["total"], 1) @@ -554,52 +553,26 @@ def test_queryset(self): with self.subTest(topic): self.assertNotContains(response, topic.subject) + def test_queryset_for_certified_topic(self): + certified_topic = TopicFactory( + with_post=True, with_certified_post=True, forum=ForumFactory(with_public_perms=True) + ) + TopicFactory( + with_post=True, + with_certified_post=True, + forum=ForumFactory(kind=ForumKind.PRIVATE_FORUM, with_public_perms=True), + ) + response = self.client.get(self.url + "?filter=CERTIFIED") self.assertEqual(response.status_code, 200) self.assertEqual(response.context_data["total"], 1) self.assertContains(response, certified_topic.subject) + self.assertContains(response, certified_topic.certified_post.post.content.raw[:100]) for topic in Topic.objects.exclude(id=certified_topic.id): with self.subTest(topic): self.assertNotContains(response, topic.subject) - def test_unanswerd_topics_visibility(self): - url = self.url + "?filter=NEW" - self.client.force_login(self.user) - - response = self.client.get(url) - self.assertEqual(response.status_code, 200) - self.assertContains(response, self.topic.subject) - - self.forum.kind = ForumKind.PRIVATE_FORUM - self.forum.save() - - response = self.client.get(url) - self.assertEqual(response.status_code, 200) - self.assertNotContains(response, self.topic.subject) - - def test_certified_topics_list_content(self): - certified_private_topic = TopicFactory( - with_certified_post=True, forum=ForumFactory(kind=ForumKind.PRIVATE_FORUM) - ) - certified_public_topic = TopicFactory(with_certified_post=True, forum=self.forum) - topic = TopicFactory(with_post=True) - self.client.force_login(self.user) - - response = self.client.get(self.url + "?filter=CERTIFIED") - self.assertEqual(response.status_code, 200) - - self.assertContains(response, certified_public_topic.first_post.subject) - self.assertContains(response, str(certified_public_topic.first_post.content)[:100]) - self.assertContains(response, str(certified_public_topic.certified_post.post.content)[:100]) - - self.assertNotContains(response, certified_private_topic.first_post.subject) - self.assertNotContains(response, str(certified_private_topic.first_post.content)[:100]) - self.assertNotContains(response, str(certified_private_topic.certified_post.post.content)[:100]) - - self.assertNotContains(response, topic.first_post.subject) - self.assertNotContains(response, str(topic.first_post.content)[:100]) - def test_pagination(self): self.client.force_login(self.user) TopicFactory.create_batch(9, with_post=True, forum=self.forum) @@ -641,3 +614,34 @@ def test_template_name(self): response = self.client.get(self.url, **{"HTTP_HX_REQUEST": "true"}) self.assertTemplateUsed(response, "forum_conversation/topic_list.html") + + +class NewsFeedTopicListViewTest(TestCase): + @classmethod + def setUpTestData(cls): + cls.url = reverse("forum_conversation_extension:newsfeed") + + def test_template_name(self): + response = self.client.get(self.url) + self.assertTemplateUsed(response, "forum_conversation/topics_newsfeed.html") + + response = self.client.get(self.url, **{"HTTP_HX_REQUEST": "true"}) + self.assertTemplateUsed(response, "forum_conversation/topic_list_newsfeed.html") + + def test_queryset(self): + news_topic = TopicFactory(with_post=True, forum=ForumFactory(kind=ForumKind.NEWS, with_public_perms=True)) + TopicFactory(with_post=True, forum=ForumFactory(kind=ForumKind.PRIVATE_FORUM, with_public_perms=True)) + TopicFactory(with_post=True, forum=ForumFactory(kind=ForumKind.PUBLIC_FORUM, with_public_perms=True)) + + response = self.client.get(self.url) + self.assertEqual(response.status_code, 200) + self.assertContains(response, news_topic.subject) + for topic in Topic.objects.exclude(id=news_topic.id): + with self.subTest(topic): + self.assertNotContains(response, topic.subject) + + def test_context_data(self): + response = self.client.get(self.url) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context_data["forum"], None) + self.assertEqual(response.context_data["loadmoretopic_url"], reverse("forum_conversation_extension:newsfeed"))