def test_move_topic_from_forum_followed_to_forum_followed_too(self): NewTopicSubscription.objects.toggle_follow(self.forum11, self.user1) NewTopicSubscription.objects.toggle_follow(self.forum12, self.user1) topic = TopicFactory(forum=self.forum11, author=self.user2) PostFactory(topic=topic, author=self.user2, position=1) self.assertEqual(1, len(Notification.objects.filter(object_id=topic.pk, is_read=False).all())) # Move the topic to another forum. self.client.logout() staff = StaffProfileFactory() self.client.force_login(staff.user) data = {"move": "", "forum": self.forum12.pk, "topic": topic.pk} response = self.client.post(reverse("topic-edit"), data, follow=False) self.assertEqual(302, response.status_code) topic = Topic.objects.get(pk=topic.pk) self.assertEqual(self.forum12, topic.forum) self.assertEqual(1, len(Notification.objects.filter(object_id=topic.pk, is_read=False, is_dead=False).all())) self.client.logout() self.client.force_login(self.user1) response = self.client.get(reverse("topic-posts-list", args=[topic.pk, topic.slug()])) self.assertEqual(200, response.status_code) self.assertEqual(1, len(Notification.objects.filter(object_id=topic.pk, is_read=True, is_dead=False).all()))
def test_mark_read_a_topic_from_view_list_posts(self): """ To ensure we can subscribe to a topic, we first generate a new notification when another user posts a message, then mark the notification as read after displaying the list of messages. """ topic = TopicFactory(forum=self.forum11, author=self.user2) PostFactory(topic=topic, author=self.user2, position=1) # Follow the topic. self.assertIsNone(TopicAnswerSubscription.objects.get_existing(self.user1, topic)) subscription = TopicAnswerSubscription.objects.get_or_create_active(self.user1, topic) # Creates a new post in the topic to generate a new notification. PostFactory(topic=topic, author=self.user2, position=1) content_notification_type = ContentType.objects.get_for_model(topic.last_message) notification = Notification.objects.get( subscription=subscription, content_type__pk=content_notification_type.pk, object_id=topic.last_message.pk, is_read=False, ) self.assertIsNotNone(notification) response = self.client.get(reverse("topic-posts-list", args=[topic.pk, topic.slug()])) self.assertEqual(response.status_code, 200) # Checks that the notification is reading now. notification = Notification.objects.get( subscription=subscription, content_type__pk=content_notification_type.pk, object_id=topic.last_message.pk, is_read=True, ) self.assertIsNotNone(notification)
def test_mark_read_a_topic_of_a_forum_subscribed(self): """ When a user has a notification on a topic, the notification should be marked as read. """ NewTopicSubscription.objects.toggle_follow(self.forum11, self.user1) topic = TopicFactory(forum=self.forum11, author=self.user2) PostFactory(topic=topic, author=self.user2, position=1) notifications = Notification.objects.filter(object_id=topic.pk, is_read=False).all() self.assertEqual(1, len(notifications)) response = self.client.get(reverse("topic-posts-list", args=[topic.pk, topic.slug()])) self.assertEqual(response.status_code, 200) notifications = Notification.objects.filter(object_id=topic.pk, is_read=False).all() self.assertEqual(0, len(notifications))