changeset 7422:88807c7284b7

tests: rename test_changeset_comments to test_changeset_pullrequests_comments As the scope of this file now is both changeset and pullrequest commenting, the filename should change as well.
author Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
date Tue, 20 Nov 2018 20:13:54 +0100
parents 1da20efed85f
children 5a958556bc9c
files kallithea/tests/functional/test_changeset_comments.py kallithea/tests/functional/test_changeset_pullrequests_comments.py
diffstat 2 files changed, 306 insertions(+), 306 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/tests/functional/test_changeset_comments.py	Mon Nov 19 22:07:26 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +0,0 @@
-import re
-
-from kallithea.tests.base import *
-from kallithea.model.db import ChangesetComment, Notification, \
-    UserNotification
-from kallithea.model.meta import Session
-
-
-class TestChangeSetCommentsController(TestController):
-
-    def setup_method(self, method):
-        for x in ChangesetComment.query().all():
-            Session().delete(x)
-        Session().commit()
-
-        self.remove_all_notifications()
-
-    def test_create(self):
-        self.log_user()
-        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
-        text = u'general comment on changeset'
-
-        params = {'text': text, '_authentication_token': self.authentication_token()}
-        response = self.app.post(url(controller='changeset', action='comment',
-                                     repo_name=HG_REPO, revision=rev),
-                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
-        # Test response...
-        assert response.status == '200 OK'
-
-        response = self.app.get(url(controller='changeset', action='index',
-                                repo_name=HG_REPO, revision=rev))
-        response.mustcontain(
-            '''<div class="comments-number">'''
-            ''' 1 comment (0 inline, 1 general)'''
-        )
-        response.mustcontain(text)
-
-        # test DB
-        assert ChangesetComment.query().count() == 1
-        assert Notification.query().count() == 1
-
-        notification = Notification.query().all()[0]
-
-        comment_id = ChangesetComment.query().first().comment_id
-        assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT
-        sbj = (u'/%s/changeset/'
-               '27cd5cce30c96924232dffcd24178a07ffeb5dfc#comment-%s'
-               % (HG_REPO, comment_id))
-        print "%s vs %s" % (sbj, notification.subject)
-        assert sbj in notification.subject
-
-    def test_create_inline(self):
-        self.log_user()
-        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
-        text = u'inline comment on changeset'
-        f_path = 'vcs/web/simplevcs/views/repository.py'
-        line = 'n1'
-
-        params = {'text': text, 'f_path': f_path, 'line': line, '_authentication_token': self.authentication_token()}
-        response = self.app.post(url(controller='changeset', action='comment',
-                                     repo_name=HG_REPO, revision=rev),
-                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
-        # Test response...
-        assert response.status == '200 OK'
-
-        response = self.app.get(url(controller='changeset', action='index',
-                                repo_name=HG_REPO, revision=rev))
-        response.mustcontain(
-            '''<div class="comments-number">'''
-            ''' 1 comment (1 inline, 0 general)'''
-        )
-        response.mustcontain(
-            '''<div class="comments-list-chunk" '''
-            '''data-f_path="vcs/web/simplevcs/views/repository.py" '''
-            '''data-line_no="n1" data-target-id="vcswebsimplevcsviewsrepositorypy_n1">'''
-        )
-        response.mustcontain(text)
-
-        # test DB
-        assert ChangesetComment.query().count() == 1
-        assert Notification.query().count() == 1
-
-        notification = Notification.query().all()[0]
-        comment_id = ChangesetComment.query().first().comment_id
-        assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT
-        sbj = (u'/%s/changeset/'
-               '27cd5cce30c96924232dffcd24178a07ffeb5dfc#comment-%s'
-               % (HG_REPO, comment_id))
-        print "%s vs %s" % (sbj, notification.subject)
-        assert sbj in notification.subject
-
-    def test_create_with_mention(self):
-        self.log_user()
-
-        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
-        text = u'@%s check CommentOnRevision' % TEST_USER_REGULAR_LOGIN
-
-        params = {'text': text, '_authentication_token': self.authentication_token()}
-        response = self.app.post(url(controller='changeset', action='comment',
-                                     repo_name=HG_REPO, revision=rev),
-                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
-        # Test response...
-        assert response.status == '200 OK'
-
-        response = self.app.get(url(controller='changeset', action='index',
-                                repo_name=HG_REPO, revision=rev))
-        response.mustcontain(
-            '''<div class="comments-number">'''
-            ''' 1 comment (0 inline, 1 general)'''
-        )
-        response.mustcontain('<b>@%s</b> check CommentOnRevision' % TEST_USER_REGULAR_LOGIN)
-
-        # test DB
-        assert ChangesetComment.query().count() == 1
-        assert Notification.query().count() == 2
-        users = [x.user.username for x in UserNotification.query().all()]
-
-        # test_regular gets notification by @mention
-        assert sorted(users) == [TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN]
-
-    def test_delete(self):
-        self.log_user()
-        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
-        text = u'general comment on changeset to be deleted'
-
-        params = {'text': text, '_authentication_token': self.authentication_token()}
-        response = self.app.post(url(controller='changeset', action='comment',
-                                     repo_name=HG_REPO, revision=rev),
-                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
-
-        comments = ChangesetComment.query().all()
-        assert len(comments) == 1
-        comment_id = comments[0].comment_id
-
-        self.app.post(url("changeset_comment_delete",
-                                    repo_name=HG_REPO,
-                                    comment_id=comment_id),
-            params={'_authentication_token': self.authentication_token()})
-
-        comments = ChangesetComment.query().all()
-        assert 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, 0 general)'''
-        )
-        response.mustcontain(no=text)
-
-
-class TestPullrequestsCommentsController(TestController):
-
-    def setup_method(self, method):
-        for x in ChangesetComment.query().all():
-            Session().delete(x)
-        Session().commit()
-
-        self.remove_all_notifications()
-
-    def _create_pr(self):
-        response = self.app.post(url(controller='pullrequests', action='create',
-                                     repo_name=HG_REPO),
-                                 {'org_repo': HG_REPO,
-                                  'org_ref': 'branch:stable:4f7e2131323e0749a740c0a56ab68ae9269c562a',
-                                  'other_repo': HG_REPO,
-                                  'other_ref': 'branch:default:96507bd11ecc815ebc6270fdf6db110928c09c1e',
-                                  'pullrequest_title': 'title',
-                                  'pullrequest_desc': 'description',
-                                  '_authentication_token': self.authentication_token(),
-                                 },
-                                 status=302)
-        pr_id = int(re.search('/pull-request/(\d+)/', response.location).group(1))
-        return pr_id
-
-    def test_create(self):
-        self.log_user()
-        pr_id = self._create_pr()
-
-        text = u'general comment on pullrequest'
-        params = {'text': text, '_authentication_token': self.authentication_token()}
-        response = self.app.post(url(controller='pullrequests', action='comment',
-                                     repo_name=HG_REPO, pull_request_id=pr_id),
-                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
-        # Test response...
-        assert response.status == '200 OK'
-
-        response = self.app.get(url(controller='pullrequests', action='show',
-                                repo_name=HG_REPO, pull_request_id=pr_id, extra=''))
-        # PRs currently always have an initial 'Under Review' status change
-        # that counts as a general comment, hence '2' in the test below. That
-        # could be counted as a misfeature, to be reworked later.
-        response.mustcontain(
-            '''<div class="comments-number">'''
-            ''' 2 comments (0 inline, 2 general)'''
-        )
-        response.mustcontain(text)
-
-        # test DB
-        assert ChangesetComment.query().count() == 2
-        assert Notification.query().count() == 1
-
-        notification = Notification.query().all()[0]
-        comment_id = ChangesetComment.query().order_by(ChangesetComment.comment_id.desc()).first().comment_id
-        assert notification.type_ == Notification.TYPE_PULL_REQUEST_COMMENT
-        sbj = (u'/%s/pull-request/%s/_/stable#comment-%s'
-               % (HG_REPO, pr_id, comment_id))
-        print "%s vs %s" % (sbj, notification.subject)
-        assert sbj in notification.subject
-
-    def test_create_inline(self):
-        self.log_user()
-        pr_id = self._create_pr()
-
-        text = u'inline comment on changeset'
-        f_path = 'vcs/web/simplevcs/views/repository.py'
-        line = 'n1'
-        params = {'text': text, 'f_path': f_path, 'line': line, '_authentication_token': self.authentication_token()}
-        response = self.app.post(url(controller='pullrequests', action='comment',
-                                     repo_name=HG_REPO, pull_request_id=pr_id),
-                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
-        # Test response...
-        assert response.status == '200 OK'
-
-        response = self.app.get(url(controller='pullrequests', action='show',
-                                repo_name=HG_REPO, pull_request_id=pr_id, extra=''))
-        response.mustcontain(
-            '''<div class="comments-number">'''
-            ''' 2 comments (1 inline, 1 general)'''
-        )
-        response.mustcontain(
-            '''<div class="comments-list-chunk" '''
-            '''data-f_path="vcs/web/simplevcs/views/repository.py" '''
-            '''data-line_no="n1" data-target-id="vcswebsimplevcsviewsrepositorypy_n1">'''
-        )
-        response.mustcontain(text)
-
-        # test DB
-        assert ChangesetComment.query().count() == 2
-        assert Notification.query().count() == 1
-
-        notification = Notification.query().all()[0]
-        comment_id = ChangesetComment.query().order_by(ChangesetComment.comment_id.desc()).first().comment_id
-        assert notification.type_ == Notification.TYPE_PULL_REQUEST_COMMENT
-        sbj = (u'/%s/pull-request/%s/_/stable#comment-%s'
-               % (HG_REPO, pr_id, comment_id))
-        print "%s vs %s" % (sbj, notification.subject)
-        assert sbj in notification.subject
-
-    def test_create_with_mention(self):
-        self.log_user()
-        pr_id = self._create_pr()
-
-        text = u'@%s check CommentOnRevision' % TEST_USER_REGULAR_LOGIN
-        params = {'text': text, '_authentication_token': self.authentication_token()}
-        response = self.app.post(url(controller='pullrequests', action='comment',
-                                     repo_name=HG_REPO, pull_request_id=pr_id),
-                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
-        # Test response...
-        assert response.status == '200 OK'
-
-        response = self.app.get(url(controller='pullrequests', action='show',
-                                repo_name=HG_REPO, pull_request_id=pr_id, extra=''))
-        response.mustcontain(
-            '''<div class="comments-number">'''
-            ''' 2 comments (0 inline, 2 general)'''
-        )
-        response.mustcontain('<b>@%s</b> check CommentOnRevision' % TEST_USER_REGULAR_LOGIN)
-
-        # test DB
-        assert ChangesetComment.query().count() == 2
-        assert Notification.query().count() == 2
-        users = [x.user.username for x in UserNotification.query().all()]
-
-        # test_regular gets notification by @mention
-        assert sorted(users) == [TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN]
-
-    def test_delete(self):
-        self.log_user()
-        pr_id = self._create_pr()
-
-        text = u'general comment on changeset to be deleted'
-        params = {'text': text, '_authentication_token': self.authentication_token()}
-        response = self.app.post(url(controller='pullrequests', action='comment',
-                                     repo_name=HG_REPO, pull_request_id=pr_id),
-                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
-
-        comments = ChangesetComment.query().all()
-        assert len(comments) == 2
-        comment_id = comments[-1].comment_id
-
-        self.app.post(url("pullrequest_comment_delete",
-                                    repo_name=HG_REPO,
-                                    comment_id=comment_id),
-            params={'_authentication_token': self.authentication_token()})
-
-        comments = ChangesetComment.query().all()
-        assert len(comments) == 1
-
-        response = self.app.get(url(controller='pullrequests', action='show',
-                                repo_name=HG_REPO, pull_request_id=pr_id, extra=''))
-        response.mustcontain(
-            '''<div class="comments-number">'''
-            ''' 1 comment (0 inline, 1 general)'''
-        )
-        response.mustcontain(no=text)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kallithea/tests/functional/test_changeset_pullrequests_comments.py	Tue Nov 20 20:13:54 2018 +0100
@@ -0,0 +1,306 @@
+import re
+
+from kallithea.tests.base import *
+from kallithea.model.db import ChangesetComment, Notification, \
+    UserNotification
+from kallithea.model.meta import Session
+
+
+class TestChangeSetCommentsController(TestController):
+
+    def setup_method(self, method):
+        for x in ChangesetComment.query().all():
+            Session().delete(x)
+        Session().commit()
+
+        self.remove_all_notifications()
+
+    def test_create(self):
+        self.log_user()
+        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
+        text = u'general comment on changeset'
+
+        params = {'text': text, '_authentication_token': self.authentication_token()}
+        response = self.app.post(url(controller='changeset', action='comment',
+                                     repo_name=HG_REPO, revision=rev),
+                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
+        # Test response...
+        assert response.status == '200 OK'
+
+        response = self.app.get(url(controller='changeset', action='index',
+                                repo_name=HG_REPO, revision=rev))
+        response.mustcontain(
+            '''<div class="comments-number">'''
+            ''' 1 comment (0 inline, 1 general)'''
+        )
+        response.mustcontain(text)
+
+        # test DB
+        assert ChangesetComment.query().count() == 1
+        assert Notification.query().count() == 1
+
+        notification = Notification.query().all()[0]
+
+        comment_id = ChangesetComment.query().first().comment_id
+        assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT
+        sbj = (u'/%s/changeset/'
+               '27cd5cce30c96924232dffcd24178a07ffeb5dfc#comment-%s'
+               % (HG_REPO, comment_id))
+        print "%s vs %s" % (sbj, notification.subject)
+        assert sbj in notification.subject
+
+    def test_create_inline(self):
+        self.log_user()
+        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
+        text = u'inline comment on changeset'
+        f_path = 'vcs/web/simplevcs/views/repository.py'
+        line = 'n1'
+
+        params = {'text': text, 'f_path': f_path, 'line': line, '_authentication_token': self.authentication_token()}
+        response = self.app.post(url(controller='changeset', action='comment',
+                                     repo_name=HG_REPO, revision=rev),
+                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
+        # Test response...
+        assert response.status == '200 OK'
+
+        response = self.app.get(url(controller='changeset', action='index',
+                                repo_name=HG_REPO, revision=rev))
+        response.mustcontain(
+            '''<div class="comments-number">'''
+            ''' 1 comment (1 inline, 0 general)'''
+        )
+        response.mustcontain(
+            '''<div class="comments-list-chunk" '''
+            '''data-f_path="vcs/web/simplevcs/views/repository.py" '''
+            '''data-line_no="n1" data-target-id="vcswebsimplevcsviewsrepositorypy_n1">'''
+        )
+        response.mustcontain(text)
+
+        # test DB
+        assert ChangesetComment.query().count() == 1
+        assert Notification.query().count() == 1
+
+        notification = Notification.query().all()[0]
+        comment_id = ChangesetComment.query().first().comment_id
+        assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT
+        sbj = (u'/%s/changeset/'
+               '27cd5cce30c96924232dffcd24178a07ffeb5dfc#comment-%s'
+               % (HG_REPO, comment_id))
+        print "%s vs %s" % (sbj, notification.subject)
+        assert sbj in notification.subject
+
+    def test_create_with_mention(self):
+        self.log_user()
+
+        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
+        text = u'@%s check CommentOnRevision' % TEST_USER_REGULAR_LOGIN
+
+        params = {'text': text, '_authentication_token': self.authentication_token()}
+        response = self.app.post(url(controller='changeset', action='comment',
+                                     repo_name=HG_REPO, revision=rev),
+                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
+        # Test response...
+        assert response.status == '200 OK'
+
+        response = self.app.get(url(controller='changeset', action='index',
+                                repo_name=HG_REPO, revision=rev))
+        response.mustcontain(
+            '''<div class="comments-number">'''
+            ''' 1 comment (0 inline, 1 general)'''
+        )
+        response.mustcontain('<b>@%s</b> check CommentOnRevision' % TEST_USER_REGULAR_LOGIN)
+
+        # test DB
+        assert ChangesetComment.query().count() == 1
+        assert Notification.query().count() == 2
+        users = [x.user.username for x in UserNotification.query().all()]
+
+        # test_regular gets notification by @mention
+        assert sorted(users) == [TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN]
+
+    def test_delete(self):
+        self.log_user()
+        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
+        text = u'general comment on changeset to be deleted'
+
+        params = {'text': text, '_authentication_token': self.authentication_token()}
+        response = self.app.post(url(controller='changeset', action='comment',
+                                     repo_name=HG_REPO, revision=rev),
+                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
+
+        comments = ChangesetComment.query().all()
+        assert len(comments) == 1
+        comment_id = comments[0].comment_id
+
+        self.app.post(url("changeset_comment_delete",
+                                    repo_name=HG_REPO,
+                                    comment_id=comment_id),
+            params={'_authentication_token': self.authentication_token()})
+
+        comments = ChangesetComment.query().all()
+        assert 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, 0 general)'''
+        )
+        response.mustcontain(no=text)
+
+
+class TestPullrequestsCommentsController(TestController):
+
+    def setup_method(self, method):
+        for x in ChangesetComment.query().all():
+            Session().delete(x)
+        Session().commit()
+
+        self.remove_all_notifications()
+
+    def _create_pr(self):
+        response = self.app.post(url(controller='pullrequests', action='create',
+                                     repo_name=HG_REPO),
+                                 {'org_repo': HG_REPO,
+                                  'org_ref': 'branch:stable:4f7e2131323e0749a740c0a56ab68ae9269c562a',
+                                  'other_repo': HG_REPO,
+                                  'other_ref': 'branch:default:96507bd11ecc815ebc6270fdf6db110928c09c1e',
+                                  'pullrequest_title': 'title',
+                                  'pullrequest_desc': 'description',
+                                  '_authentication_token': self.authentication_token(),
+                                 },
+                                 status=302)
+        pr_id = int(re.search('/pull-request/(\d+)/', response.location).group(1))
+        return pr_id
+
+    def test_create(self):
+        self.log_user()
+        pr_id = self._create_pr()
+
+        text = u'general comment on pullrequest'
+        params = {'text': text, '_authentication_token': self.authentication_token()}
+        response = self.app.post(url(controller='pullrequests', action='comment',
+                                     repo_name=HG_REPO, pull_request_id=pr_id),
+                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
+        # Test response...
+        assert response.status == '200 OK'
+
+        response = self.app.get(url(controller='pullrequests', action='show',
+                                repo_name=HG_REPO, pull_request_id=pr_id, extra=''))
+        # PRs currently always have an initial 'Under Review' status change
+        # that counts as a general comment, hence '2' in the test below. That
+        # could be counted as a misfeature, to be reworked later.
+        response.mustcontain(
+            '''<div class="comments-number">'''
+            ''' 2 comments (0 inline, 2 general)'''
+        )
+        response.mustcontain(text)
+
+        # test DB
+        assert ChangesetComment.query().count() == 2
+        assert Notification.query().count() == 1
+
+        notification = Notification.query().all()[0]
+        comment_id = ChangesetComment.query().order_by(ChangesetComment.comment_id.desc()).first().comment_id
+        assert notification.type_ == Notification.TYPE_PULL_REQUEST_COMMENT
+        sbj = (u'/%s/pull-request/%s/_/stable#comment-%s'
+               % (HG_REPO, pr_id, comment_id))
+        print "%s vs %s" % (sbj, notification.subject)
+        assert sbj in notification.subject
+
+    def test_create_inline(self):
+        self.log_user()
+        pr_id = self._create_pr()
+
+        text = u'inline comment on changeset'
+        f_path = 'vcs/web/simplevcs/views/repository.py'
+        line = 'n1'
+        params = {'text': text, 'f_path': f_path, 'line': line, '_authentication_token': self.authentication_token()}
+        response = self.app.post(url(controller='pullrequests', action='comment',
+                                     repo_name=HG_REPO, pull_request_id=pr_id),
+                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
+        # Test response...
+        assert response.status == '200 OK'
+
+        response = self.app.get(url(controller='pullrequests', action='show',
+                                repo_name=HG_REPO, pull_request_id=pr_id, extra=''))
+        response.mustcontain(
+            '''<div class="comments-number">'''
+            ''' 2 comments (1 inline, 1 general)'''
+        )
+        response.mustcontain(
+            '''<div class="comments-list-chunk" '''
+            '''data-f_path="vcs/web/simplevcs/views/repository.py" '''
+            '''data-line_no="n1" data-target-id="vcswebsimplevcsviewsrepositorypy_n1">'''
+        )
+        response.mustcontain(text)
+
+        # test DB
+        assert ChangesetComment.query().count() == 2
+        assert Notification.query().count() == 1
+
+        notification = Notification.query().all()[0]
+        comment_id = ChangesetComment.query().order_by(ChangesetComment.comment_id.desc()).first().comment_id
+        assert notification.type_ == Notification.TYPE_PULL_REQUEST_COMMENT
+        sbj = (u'/%s/pull-request/%s/_/stable#comment-%s'
+               % (HG_REPO, pr_id, comment_id))
+        print "%s vs %s" % (sbj, notification.subject)
+        assert sbj in notification.subject
+
+    def test_create_with_mention(self):
+        self.log_user()
+        pr_id = self._create_pr()
+
+        text = u'@%s check CommentOnRevision' % TEST_USER_REGULAR_LOGIN
+        params = {'text': text, '_authentication_token': self.authentication_token()}
+        response = self.app.post(url(controller='pullrequests', action='comment',
+                                     repo_name=HG_REPO, pull_request_id=pr_id),
+                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
+        # Test response...
+        assert response.status == '200 OK'
+
+        response = self.app.get(url(controller='pullrequests', action='show',
+                                repo_name=HG_REPO, pull_request_id=pr_id, extra=''))
+        response.mustcontain(
+            '''<div class="comments-number">'''
+            ''' 2 comments (0 inline, 2 general)'''
+        )
+        response.mustcontain('<b>@%s</b> check CommentOnRevision' % TEST_USER_REGULAR_LOGIN)
+
+        # test DB
+        assert ChangesetComment.query().count() == 2
+        assert Notification.query().count() == 2
+        users = [x.user.username for x in UserNotification.query().all()]
+
+        # test_regular gets notification by @mention
+        assert sorted(users) == [TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN]
+
+    def test_delete(self):
+        self.log_user()
+        pr_id = self._create_pr()
+
+        text = u'general comment on changeset to be deleted'
+        params = {'text': text, '_authentication_token': self.authentication_token()}
+        response = self.app.post(url(controller='pullrequests', action='comment',
+                                     repo_name=HG_REPO, pull_request_id=pr_id),
+                                     params=params, extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
+
+        comments = ChangesetComment.query().all()
+        assert len(comments) == 2
+        comment_id = comments[-1].comment_id
+
+        self.app.post(url("pullrequest_comment_delete",
+                                    repo_name=HG_REPO,
+                                    comment_id=comment_id),
+            params={'_authentication_token': self.authentication_token()})
+
+        comments = ChangesetComment.query().all()
+        assert len(comments) == 1
+
+        response = self.app.get(url(controller='pullrequests', action='show',
+                                repo_name=HG_REPO, pull_request_id=pr_id, extra=''))
+        response.mustcontain(
+            '''<div class="comments-number">'''
+            ''' 1 comment (0 inline, 1 general)'''
+        )
+        response.mustcontain(no=text)