[PATCH 04 of 14] tests: test status change in comments and pull requests

Thomas De Schampheleire patrickdepinguin at gmail.com
Tue Nov 20 20:32:15 UTC 2018


# HG changeset patch
# User Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>
# Date 1542745363 -3600
#      Tue Nov 20 21:22:43 2018 +0100
# Node ID c7766ad745c60dd8a6263ff99b8157b1fe60e097
# Parent  ca1f840bf9558c954643e108dc30f239c7ff998b
tests: test status change in comments and pull requests

Status changes when commenting was not yet covered.
This commits adds the basic logic, but is not full coverage.

diff --git a/kallithea/tests/functional/test_changeset_pullrequests_comments.py b/kallithea/tests/functional/test_changeset_pullrequests_comments.py
--- a/kallithea/tests/functional/test_changeset_pullrequests_comments.py
+++ b/kallithea/tests/functional/test_changeset_pullrequests_comments.py
@@ -1,6 +1,7 @@
 import re
 
 from kallithea.tests.base import *
+from kallithea.model.changeset_status import ChangesetStatusModel
 from kallithea.model.db import ChangesetComment, Notification, \
     UserNotification
 from kallithea.model.meta import Session
@@ -118,6 +119,45 @@ class TestChangeSetCommentsController(Te
         # test_regular gets notification by @mention
         assert sorted(users) == [TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN]
 
+    def test_create_status_change(self):
+        self.log_user()
+        rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
+        text = u'general comment on changeset'
+
+        params = {'text': text, 'changeset_status': 'rejected',
+                '_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
+
+        # check status
+        status = ChangesetStatusModel().get_status(repo=HG_REPO, revision=rev)
+        assert status == 'rejected'
+
     def test_delete(self):
         self.log_user()
         rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
@@ -275,6 +315,46 @@ class TestPullrequestsCommentsController
         # test_regular gets notification by @mention
         assert sorted(users) == [TEST_USER_ADMIN_LOGIN, TEST_USER_REGULAR_LOGIN]
 
+    def test_create_status_change(self):
+        self.log_user()
+        pr_id = self._create_pr()
+
+        text = u'general comment on pullrequest'
+        params = {'text': text, 'changeset_status': 'rejected',
+                '_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
+
+        # check status
+        status = ChangesetStatusModel().get_status(repo=HG_REPO, pull_request=pr_id)
+        assert status == 'rejected'
+
     def test_delete(self):
         self.log_user()
         pr_id = self._create_pr()


More information about the kallithea-general mailing list