[PATCH 1 of 2] tests: add basic tests for comment model
Thomas De Schampheleire
patrickdepinguin at gmail.com
Thu Dec 27 11:25:38 UTC 2018
# HG changeset patch
# User Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>
# Date 1545853924 -3600
# Wed Dec 26 20:52:04 2018 +0100
# Node ID 1235dd8c18cb1f3fe525a7997effe23acba6de94
# Parent f5841b61a5821094faf033b13400d58f5d372199
tests: add basic tests for comment model
diff --git a/kallithea/tests/models/test_comments.py b/kallithea/tests/models/test_comments.py
new file mode 100644
--- /dev/null
+++ b/kallithea/tests/models/test_comments.py
@@ -0,0 +1,155 @@
+from kallithea.tests.base import *
+from kallithea.model.comment import ChangesetCommentsModel
+from kallithea.model.db import Repository
+
+from tg.util.webtest import test_context
+
+class TestComments(TestController):
+
+ def _check_comment_count(self, repo_id, revision, expected_len_comments, expected_len_inline_comments):
+ comments = ChangesetCommentsModel().get_comments(repo_id,
+ revision=revision)
+ assert len(comments) == expected_len_comments
+ inline_comments = ChangesetCommentsModel().get_inline_comments(repo_id,
+ revision=revision)
+ assert len(inline_comments) == expected_len_inline_comments
+
+ return comments, inline_comments
+
+ def test_create_delete_general_comment(self):
+ with test_context(self.app):
+ repo_id = Repository.get_by_repo_name(HG_REPO).repo_id
+ revision = '9a7b4ff9e8b40bbda72fc75f162325b9baa45cda'
+
+ self._check_comment_count(repo_id, revision,
+ expected_len_comments=0, expected_len_inline_comments=0)
+
+ text = u'a comment'
+ new_comment = ChangesetCommentsModel().create(
+ text=text,
+ repo=HG_REPO,
+ author=TEST_USER_REGULAR_LOGIN,
+ revision=revision,
+ send_email=False)
+
+ self._check_comment_count(repo_id, revision,
+ expected_len_comments=1, expected_len_inline_comments=0)
+
+ ChangesetCommentsModel().delete(new_comment)
+
+ self._check_comment_count(repo_id, revision,
+ expected_len_comments=0, expected_len_inline_comments=0)
+
+ def test_create_delete_inline_comment(self):
+ with test_context(self.app):
+ repo_id = Repository.get_by_repo_name(HG_REPO).repo_id
+ revision = '9a7b4ff9e8b40bbda72fc75f162325b9baa45cda'
+
+ self._check_comment_count(repo_id, revision,
+ expected_len_comments=0, expected_len_inline_comments=0)
+
+ text = u'an inline comment'
+ f_path = u'vcs/tests/base.py'
+ line_no = u'n50'
+ new_comment = ChangesetCommentsModel().create(
+ text=text,
+ repo=HG_REPO,
+ author=TEST_USER_REGULAR_LOGIN,
+ revision=revision,
+ f_path=f_path,
+ line_no=line_no,
+ send_email=False)
+
+ comments, inline_comments = self._check_comment_count(repo_id, revision,
+ expected_len_comments=0, expected_len_inline_comments=1)
+ # inline_comments is a list of tuples (file_path, dict)
+ # where the dict keys are line numbers and values are lists of comments
+ assert inline_comments[0][0] == f_path
+ assert len(inline_comments[0][1]) == 1
+ assert line_no in inline_comments[0][1]
+ assert inline_comments[0][1][line_no][0].text == text
+
+ ChangesetCommentsModel().delete(new_comment)
+
+ self._check_comment_count(repo_id, revision,
+ expected_len_comments=0, expected_len_inline_comments=0)
+
+ def test_create_delete_multiple_inline_comments(self):
+ with test_context(self.app):
+ repo_id = Repository.get_by_repo_name(HG_REPO).repo_id
+ revision = '9a7b4ff9e8b40bbda72fc75f162325b9baa45cda'
+
+ self._check_comment_count(repo_id, revision,
+ expected_len_comments=0, expected_len_inline_comments=0)
+
+ text = u'an inline comment'
+ f_path = u'vcs/tests/base.py'
+ line_no = u'n50'
+ new_comment = ChangesetCommentsModel().create(
+ text=text,
+ repo=HG_REPO,
+ author=TEST_USER_REGULAR_LOGIN,
+ revision=revision,
+ f_path=f_path,
+ line_no=line_no,
+ send_email=False)
+
+ text2 = u'another inline comment, same file'
+ line_no2 = u'o41'
+ new_comment2 = ChangesetCommentsModel().create(
+ text=text2,
+ repo=HG_REPO,
+ author=TEST_USER_REGULAR_LOGIN,
+ revision=revision,
+ f_path=f_path,
+ line_no=line_no2,
+ send_email=False)
+
+ text3 = u'another inline comment, same file'
+ f_path3 = u'vcs/tests/test_hg.py'
+ line_no3 = u'n159'
+ new_comment3 = ChangesetCommentsModel().create(
+ text=text3,
+ repo=HG_REPO,
+ author=TEST_USER_REGULAR_LOGIN,
+ revision=revision,
+ f_path=f_path3,
+ line_no=line_no3,
+ send_email=False)
+
+ comments, inline_comments = self._check_comment_count(repo_id, revision,
+ expected_len_comments=0, expected_len_inline_comments=2)
+ # inline_comments is a list of tuples (file_path, dict)
+ # where the dict keys are line numbers and values are lists of comments
+ assert inline_comments[1][0] == f_path
+ assert len(inline_comments[1][1]) == 2
+ assert inline_comments[1][1][line_no][0].text == text
+ assert inline_comments[1][1][line_no2][0].text == text2
+
+ assert inline_comments[0][0] == f_path3
+ assert len(inline_comments[0][1]) == 1
+ assert line_no3 in inline_comments[0][1]
+ assert inline_comments[0][1][line_no3][0].text == text3
+
+ # now delete only one comment
+ ChangesetCommentsModel().delete(new_comment2)
+
+ comments, inline_comments = self._check_comment_count(repo_id, revision,
+ expected_len_comments=0, expected_len_inline_comments=2)
+ # inline_comments is a list of tuples (file_path, dict)
+ # where the dict keys are line numbers and values are lists of comments
+ assert inline_comments[1][0] == f_path
+ assert len(inline_comments[1][1]) == 1
+ assert inline_comments[1][1][line_no][0].text == text
+
+ assert inline_comments[0][0] == f_path3
+ assert len(inline_comments[0][1]) == 1
+ assert line_no3 in inline_comments[0][1]
+ assert inline_comments[0][1][line_no3][0].text == text3
+
+ # now delete all others
+ ChangesetCommentsModel().delete(new_comment)
+ ChangesetCommentsModel().delete(new_comment3)
+
+ self._check_comment_count(repo_id, revision,
+ expected_len_comments=0, expected_len_inline_comments=0)
More information about the kallithea-general
mailing list