def test_get_comment_context_data(self): comment_per_page = 'COMMENT_PER_PAGE' login_url = 'LOGIN_URL' current_login_url = getattr(settings, login_url, '/profile/login/') comment_allow_anonymous = 'COMMENT_ALLOW_ANONYMOUS' oauth = 'oauth' patch.object(settings, login_url, current_login_url).start() patch.object(settings, comment_allow_anonymous, False).start() patch.object(settings, comment_per_page, 0).start() data = { 'model_object': self.post_1, 'model_name': 'post', 'model_id': self.post_1.id, 'app_name': 'post', 'user': self.post_1.author, 'page': 10, oauth: 'True' } request = self.factory.post('/', data=data) request.user = self.post_1.author if current_login_url.startswith('/'): patch.object(settings, login_url, current_login_url[1:]).start() comment_context_data = get_comment_context_data(request) self.assertEqual(comment_context_data['comments'].count(), self.increment) # test inserting '/' to the beginning of login url self.assertEqual(comment_context_data['login_url'], '/' + settings.LOGIN_URL) self.assertEqual(comment_context_data['is_anonymous_allowed'], settings.COMMENT_ALLOW_ANONYMOUS) self.assertEqual(comment_context_data['oauth'], True) patch.object(settings, login_url, current_login_url).start() patch.object(settings, comment_allow_anonymous, True).start() patch.object(settings, comment_per_page, 2).start() request = self.factory.post('/', data=data) request.user = self.post_1.author comment_context_data = get_comment_context_data(request) self.assertEqual(comment_context_data['comments'].paginator.per_page, 2) self.assertTrue(comment_context_data['comments'].has_previous()) self.assertEqual(comment_context_data['login_url'], settings.LOGIN_URL) self.assertEqual(comment_context_data['is_anonymous_allowed'], settings.COMMENT_ALLOW_ANONYMOUS) data.update({'page': 'not integer', oauth: 'False'}) request = self.factory.post('/', data=data) request.user = self.post_1.author comment_context_data = get_comment_context_data(request) self.assertEqual(comment_context_data['comments'].paginator.per_page, 2) self.assertTrue(comment_context_data['comments'].has_next()) self.assertEqual(comment_context_data[oauth], False)
def render_comments(obj, request, oauth=False, comments_per_page=10): """ Retrieves list of comment related to a certain object and renders the appropriate template """ context = get_comment_context_data(request, model_object=obj, comments_per_page=comments_per_page) context.update({'comment_form': CommentForm(), 'oauth': oauth}) return context
def test_get_comment_context_data(self): setattr(settings, 'LOGIN_URL', 'login') data = { 'model_object': self.post_1, 'model_name': 'post', 'model_id': self.post_1.id, 'app_name': 'post', 'user': self.post_1.author, 'comments_per_page': '', 'page': 10 } request = self.factory.post('/', data=data) request.user = self.post_1.author comment_context_data = get_comment_context_data(request) self.assertEqual(comment_context_data['comments'].count(), 3) self.assertEqual(comment_context_data['login_url'], '/' + settings.LOGIN_URL) data['comments_per_page'] = 2 setattr(settings, 'LOGIN_URL', '/login') request = self.factory.post('/', data=data) request.user = self.post_1.author comment_context_data = get_comment_context_data(request) self.assertEqual(comment_context_data['comments'].paginator.per_page, 2) self.assertTrue(comment_context_data['comments'].has_previous()) self.assertEqual(comment_context_data['login_url'], settings.LOGIN_URL) data['comments_per_page'] = 2 data['page'] = 'not integer' request = self.factory.post('/', data=data) request.user = self.post_1.author comment_context_data = get_comment_context_data(request) self.assertEqual(comment_context_data['comments'].paginator.per_page, 2) self.assertTrue(comment_context_data['comments'].has_next())
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['comment_form'] = context.pop('form') context.update(get_comment_context_data(self.request)) return context