Files @ ae5ac36cdf83
Branch filter:

Location: kallithea/rhodecode/tests/functional/test_changeset_comments.py - annotation

Mads Kiilerich
pull request: use unionrepo instead of outgoing

This makes it possible to look the 'moving target' symbols up in the right repo.

Using a revset with the right revisions also removes the need for pruning
changesets that are outside the requested range.

It will also not be confused by changesets that for some reason has been pulled
to the repo but haven't been merged yet. They are going to be 'merged' by the
'pull' request and should thus be a part of what is reviewed.
e1e482093077
e1e482093077
e1e482093077
e1e482093077
50aa7cb78cfe
50aa7cb78cfe
e1e482093077
e1e482093077
e1e482093077
8ecc6b8229a5
8ecc6b8229a5
e1e482093077
e1e482093077
8ecc6b8229a5
8ecc6b8229a5
e1e482093077
e1e482093077
e1e482093077
8ecc6b8229a5
8ecc6b8229a5
e1e482093077
e1e482093077
8ecc6b8229a5
8ecc6b8229a5
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
50aa7cb78cfe
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
c4d8ed624728
c4d8ed624728
e1e482093077
50aa7cb78cfe
50aa7cb78cfe
e1e482093077
e1e482093077
e1e482093077
50aa7cb78cfe
a8c9c0094ddf
50aa7cb78cfe
50aa7cb78cfe
50aa7cb78cfe
50aa7cb78cfe
50aa7cb78cfe
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
50aa7cb78cfe
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
ec6691dd9e94
c4d8ed624728
ec6691dd9e94
ec6691dd9e94
ec6691dd9e94
ec6691dd9e94
ec6691dd9e94
ec6691dd9e94
ec6691dd9e94
e1e482093077
e1e482093077
50aa7cb78cfe
e1e482093077
50aa7cb78cfe
50aa7cb78cfe
a8c9c0094ddf
50aa7cb78cfe
50aa7cb78cfe
50aa7cb78cfe
50aa7cb78cfe
50aa7cb78cfe
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
c4d8ed624728
c4d8ed624728
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
64e91067b996
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
50aa7cb78cfe
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
64e91067b996
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
e1e482093077
c4d8ed624728
c4d8ed624728
from rhodecode.tests import *
from rhodecode.model.db import ChangesetComment, Notification, User, \
    UserNotification


class TestChangeSetCommentsController(TestController):

    def setUp(self):
        for x in ChangesetComment.query().all():
            self.Session.delete(x)
        self.Session.commit()

        for x in Notification.query().all():
            self.Session.delete(x)
        self.Session.commit()

    def tearDown(self):
        for x in ChangesetComment.query().all():
            self.Session.delete(x)
        self.Session.commit()

        for x in Notification.query().all():
            self.Session.delete(x)
        self.Session.commit()

    def test_create(self):
        self.log_user()
        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
        text = u'CommentOnRevision'

        params = {'text': text}
        response = self.app.post(url(controller='changeset', action='comment',
                                     repo_name=HG_REPO, revision=rev),
                                     params=params)
        # Test response...
        self.assertEqual(response.status, '302 Found')
        response.follow()

        response = self.app.get(url(controller='changeset', action='index',
                                repo_name=HG_REPO, revision=rev))
        # test DB
        self.assertEqual(ChangesetComment.query().count(), 1)
        response.mustcontain('''<div class="comments-number">%s comment '''
                             '''(0 inline)</div>''' % 1)

        self.assertEqual(Notification.query().count(), 1)
        self.assertEqual(ChangesetComment.query().count(), 1)

        notification = Notification.query().all()[0]

        ID = ChangesetComment.query().first().comment_id
        self.assertEqual(notification.type_,
                         Notification.TYPE_CHANGESET_COMMENT)
        sbj = (u'/vcs_test_hg/changeset/'
               '27cd5cce30c96924232dffcd24178a07ffeb5dfc#comment-%s' % ID)
        print "%s vs %s" % (sbj, notification.subject)
        self.assertTrue(sbj in notification.subject)

    def test_create_inline(self):
        self.log_user()
        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
        text = u'CommentOnRevision'
        f_path = 'vcs/web/simplevcs/views/repository.py'
        line = 'n1'

        params = {'text': text, 'f_path': f_path, 'line': line}
        response = self.app.post(url(controller='changeset', action='comment',
                                     repo_name=HG_REPO, revision=rev),
                                     params=params)
        # Test response...
        self.assertEqual(response.status, '302 Found')
        response.follow()

        response = self.app.get(url(controller='changeset', action='index',
                                repo_name=HG_REPO, revision=rev))
        #test DB
        self.assertEqual(ChangesetComment.query().count(), 1)
        response.mustcontain(
            '''<div class="comments-number">0 comments'''
            ''' (%s inline)</div>''' % 1
        )
        response.mustcontain(
            '''<div style="display:none" class="inline-comment-placeholder" '''
            '''path="vcs/web/simplevcs/views/repository.py" '''
            '''target_id="vcswebsimplevcsviewsrepositorypy">'''
        )

        self.assertEqual(Notification.query().count(), 1)
        self.assertEqual(ChangesetComment.query().count(), 1)

        notification = Notification.query().all()[0]
        ID = ChangesetComment.query().first().comment_id
        self.assertEqual(notification.type_,
                         Notification.TYPE_CHANGESET_COMMENT)
        sbj = (u'/vcs_test_hg/changeset/'
               '27cd5cce30c96924232dffcd24178a07ffeb5dfc#comment-%s' % ID)
        print "%s vs %s" % (sbj, notification.subject)
        self.assertTrue(sbj in notification.subject)

    def test_create_with_mention(self):
        self.log_user()

        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
        text = u'@test_regular check CommentOnRevision'

        params = {'text':text}
        response = self.app.post(url(controller='changeset', action='comment',
                                     repo_name=HG_REPO, revision=rev),
                                     params=params)
        # Test response...
        self.assertEqual(response.status, '302 Found')
        response.follow()

        response = self.app.get(url(controller='changeset', action='index',
                                repo_name=HG_REPO, revision=rev))
        # test DB
        self.assertEqual(ChangesetComment.query().count(), 1)
        response.mustcontain('''<div class="comments-number">%s '''
                             '''comment (0 inline)</div>''' % 1)

        self.assertEqual(Notification.query().count(), 2)
        users = [x.user.username for x in UserNotification.query().all()]

        # test_regular get's notification by @mention
        self.assertEqual(sorted(users), [u'test_admin', u'test_regular'])

    def test_delete(self):
        self.log_user()
        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
        text = u'CommentOnRevision'

        params = {'text': text}
        response = self.app.post(url(controller='changeset', action='comment',
                                     repo_name=HG_REPO, revision=rev),
                                     params=params)

        comments = ChangesetComment.query().all()
        self.assertEqual(len(comments), 1)
        comment_id = comments[0].comment_id

        self.app.delete(url(controller='changeset',
                                    action='delete_comment',
                                    repo_name=HG_REPO,
                                    comment_id=comment_id))

        comments = ChangesetComment.query().all()
        self.assertEqual(len(comments), 0)

        response = self.app.get(url(controller='changeset', action='index',
                                repo_name=HG_REPO, revision=rev))
        response.mustcontain('''<div class="comments-number">0 comments'''
                             ''' (0 inline)</div>''')