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())
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, ]
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, ]
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())