Exemple #1
0
    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)
Exemple #2
0
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
Exemple #3
0
    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())
Exemple #4
0
 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