Ejemplo n.º 1
0
    def test_can_determine_unread_forums(self):
        # Setup
        def get_rendered(topics, user):
            request = self.get_request()
            request.user = user
            ForumPermissionMiddleware().process_request(request)
            t = Template(self.loadstatement + '{% get_unread_topics topics request.user as unread_topics %}')
            c = Context({'topics': topics, 'request': request})
            rendered = t.render(c)

            return c, rendered

        # Run & check
        context, rendered = get_rendered(self.forum_2.topics.all(), self.u2)
        assert rendered == ''
        assert set(context['unread_topics']) == set(self.forum_2.topics.all())

        # forum_2 topics are now read
        TopicReadTrackFactory.create(topic=self.forum_2_topic, user=self.u2)
        context, rendered = get_rendered(self.forum_2.topics.all(), self.u2)
        assert rendered == ''
        assert not len(context['unread_topics'])

        # A new post is created with a pre-existing topic track
        PostFactory.create(topic=self.forum_2_topic, poster=self.u1)
        context, rendered = get_rendered(self.forum_2.topics.all(), self.u2)
        assert rendered == ''
        assert set(context['unread_topics']) == set(self.forum_2.topics.all())

        # A new post is created with a pre-existing forum track
        ForumReadTrackFactory.create(forum=self.forum_1, user=self.u2)
        PostFactory.create(topic=self.forum_1_topic, poster=self.u1)
        context, rendered = get_rendered(self.forum_1.topics.all(), self.u2)
        assert rendered == ''
        assert set(context['unread_topics']) == set(self.forum_1.topics.all())
Ejemplo n.º 2
0
 def test_says_that_a_topic_with_a_last_post_date_greater_than_its_mark_time_is_unread(self):
     # Setup
     TopicReadTrackFactory.create(topic=self.topic, user=self.u2)
     PostFactory.create(topic=self.topic, poster=self.u1)
     # Run
     unread_topics = self.tracks_handler.get_unread_topics(self.forum_2.topics.all(), self.u2)
     # Check
     assert unread_topics == [self.topic, ]
Ejemplo n.º 3
0
 def test_says_that_a_topic_with_a_last_post_date_greater_than_its_mark_time_is_unread(self):
     # Setup
     TopicReadTrackFactory.create(topic=self.topic, user=self.u2)
     PostFactory.create(topic=self.topic, poster=self.u1)
     # Run
     unread_topics = self.tracks_handler.get_unread_topics(self.forum_2.topics.all(), self.u2)
     # Check
     assert unread_topics == [self.topic, ]
Ejemplo n.º 4
0
 def test_cannot_say_that_a_topic_is_unread_if_it_has_been_marked(self):
     # Setup
     PostFactory.create(topic=self.topic, poster=self.u1)
     new_topic = create_topic(forum=self.forum_2, poster=self.u1)
     TopicReadTrackFactory.create(topic=self.topic, user=self.u2)
     # Run
     unread_topics = self.tracks_handler.get_unread_topics(self.forum_2.topics.all(), self.u2)
     # Check
     assert unread_topics == [new_topic, ]
Ejemplo n.º 5
0
 def test_cannot_say_that_a_topic_is_unread_if_it_has_been_marked(self):
     # Setup
     PostFactory.create(topic=self.topic, poster=self.u1)
     new_topic = create_topic(forum=self.forum_2, poster=self.u1)
     TopicReadTrackFactory.create(topic=self.topic, user=self.u2)
     # Run
     unread_topics = self.tracks_handler.get_unread_topics(self.forum_2.topics.all(), self.u2)
     # Check
     assert unread_topics == [new_topic, ]
Ejemplo n.º 6
0
 def test_cannot_say_that_a_topic_is_unread_if_it_has_been_edited(self):
     # Setup
     TopicReadTrackFactory.create(topic=self.topic, user=self.u2)
     post = self.topic.posts.all()[0]
     post.content = faker.text()
     post.save()
     # Run
     unread_forums = self.tracks_handler.get_unread_forums(self.u2)
     unread_topics = self.tracks_handler.get_unread_topics(self.forum_2.topics.all(), self.u2)
     # Check
     assert not len(unread_forums)
     assert not len(unread_topics)
Ejemplo n.º 7
0
 def test_cannot_say_that_a_topic_is_unread_if_it_has_been_edited(self):
     # Setup
     TopicReadTrackFactory.create(topic=self.topic, user=self.u2)
     post = self.topic.posts.all()[0]
     post.content = faker.text()
     post.save()
     # Run
     unread_forums = self.tracks_handler.get_unread_forums(self.u2)
     unread_topics = self.tracks_handler.get_unread_topics(self.forum_2.topics.all(), self.u2)
     # Check
     assert not len(unread_forums)
     assert not len(unread_topics)
    def test_can_determine_unread_forums(self):
        # Setup
        def get_rendered(topics, user):
            request = self.get_request()
            request.user = user
            ForumPermissionMiddleware().process_request(request)
            t = Template(
                self.loadstatement +
                '{% get_unread_topics topics request.user as unread_topics %}')
            c = Context({'topics': topics, 'request': request})
            rendered = t.render(c)

            return c, rendered

        # Run & check
        context, rendered = get_rendered(self.forum_2.topics.all(), self.u2)
        assert rendered == ''
        assert set(context['unread_topics']) == set(self.forum_2.topics.all())

        # forum_2 topics are now read
        TopicReadTrackFactory.create(topic=self.forum_2_topic, user=self.u2)
        context, rendered = get_rendered(self.forum_2.topics.all(), self.u2)
        assert rendered == ''
        assert not len(context['unread_topics'])

        # A new post is created with a pre-existing topic track
        PostFactory.create(topic=self.forum_2_topic, poster=self.u1)
        context, rendered = get_rendered(self.forum_2.topics.all(), self.u2)
        assert rendered == ''
        assert set(context['unread_topics']) == set(self.forum_2.topics.all())

        # A new post is created with a pre-existing forum track
        ForumReadTrackFactory.create(forum=self.forum_1, user=self.u2)
        PostFactory.create(topic=self.forum_1_topic, poster=self.u1)
        context, rendered = get_rendered(self.forum_1.topics.all(), self.u2)
        assert rendered == ''
        assert set(context['unread_topics']) == set(self.forum_1.topics.all())