changeset 4843:880084c63e52

pullrequests: add unit tests for _get_repo_refs (unfinished)
author Thomas De Schampheleire <thomas.de_schampheleire@alcatel-lucent.com>
date Thu, 19 Feb 2015 22:46:14 +0100
parents fd8c0117ca22
children 556e98fd06d2
files kallithea/tests/functional/test_pullrequests.py
diffstat 1 files changed, 94 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/tests/functional/test_pullrequests.py	Wed Feb 18 21:39:01 2015 +0100
+++ b/kallithea/tests/functional/test_pullrequests.py	Thu Feb 19 22:46:14 2015 +0100
@@ -1,5 +1,10 @@
 from kallithea.tests import *
+from kallithea.tests.fixture import Fixture
+from kallithea.model.meta import Session
 
+from kallithea.controllers.pullrequests import PullrequestsController
+
+fixture = Fixture()
 
 class TestPullrequestsController(TestController):
 
@@ -7,3 +12,92 @@
         self.log_user()
         response = self.app.get(url(controller='pullrequests', action='index',
                                     repo_name=HG_REPO))
+
+class TestPullrequestsGetRepoRefs(TestController):
+
+    def setUp(self):
+        self.main = fixture.create_repo('main', repo_type='hg')
+        Session.add(self.main)
+        Session.commit()
+        self.c = PullrequestsController()
+
+    def tearDown(self):
+        fixture.destroy_repo('main')
+        Session.commit()
+        Session.remove()
+
+    def test_repo_refs_empty_repo(self):
+        # empty repo with no commits, no branches, no bookmarks, just one tag
+        refs, default = self.c._get_repo_refs(self.main.scm_instance)
+        self.assertEqual(default, 'tag:null:0000000000000000000000000000000000000000')
+
+    def test_repo_refs_one_commit_no_hints(self):
+        cs0 = fixture.commit_change(self.main.repo_name, filename='file1',
+                content='line1\n', message='commit1', vcs_type='hg',
+                parent=None, newfile=True)
+
+        refs, default = self.c._get_repo_refs(self.main.scm_instance)
+        self.assertEqual(default, 'branch:default:%s' % cs0.raw_id)
+        self.assertIn(([('branch:default:%s' % cs0.raw_id, 'default (current tip)')],
+                'Branches'), refs)
+
+    def test_repo_refs_one_commit_rev_hint(self):
+        cs0 = fixture.commit_change(self.main.repo_name, filename='file1',
+                content='line1\n', message='commit1', vcs_type='hg',
+                parent=None, newfile=True)
+
+        refs, default = self.c._get_repo_refs(self.main.scm_instance, rev=cs0.raw_id)
+        expected = 'branch:default:%s' % cs0.raw_id
+        self.assertEqual(default, expected)
+        self.assertIn(([(expected, 'default (current tip)')], 'Branches'), refs)
+
+    def test_repo_refs_two_commits_no_hints(self):
+        cs0 = fixture.commit_change(self.main.repo_name, filename='file1',
+                content='line1\n', message='commit1', vcs_type='hg',
+                parent=None, newfile=True)
+        cs1 = fixture.commit_change(self.main.repo_name, filename='file2',
+                content='line2\n', message='commit2', vcs_type='hg',
+                parent=None, newfile=True)
+
+        refs, default = self.c._get_repo_refs(self.main.scm_instance)
+        expected = 'branch:default:%s' % cs1.raw_id
+        self.assertEqual(default, expected)
+        self.assertIn(([(expected, 'default (current tip)')], 'Branches'), refs)
+
+    def test_repo_refs_two_commits_rev_hints(self):
+        cs0 = fixture.commit_change(self.main.repo_name, filename='file1',
+                content='line1\n', message='commit1', vcs_type='hg',
+                parent=None, newfile=True)
+        cs1 = fixture.commit_change(self.main.repo_name, filename='file2',
+                content='line2\n', message='commit2', vcs_type='hg',
+                parent=None, newfile=True)
+
+        refs, default = self.c._get_repo_refs(self.main.scm_instance, rev=cs0.raw_id)
+        expected = 'rev:%s:%s' % (cs0.raw_id, cs0.raw_id)
+        self.assertEqual(default, expected)
+        self.assertIn(([(expected, 'Changeset: %s' % cs0.raw_id[0:12])], 'Special'), refs)
+        self.assertIn(([('branch:default:%s' % cs1.raw_id, 'default (current tip)')], 'Branches'), refs)
+
+        refs, default = self.c._get_repo_refs(self.main.scm_instance, rev=cs1.raw_id)
+        expected = 'branch:default:%s' % cs1.raw_id
+        self.assertEqual(default, expected)
+        self.assertIn(([(expected, 'default (current tip)')], 'Branches'), refs)
+
+    def test_repo_refs_two_commits_branch_hint(self):
+        cs0 = fixture.commit_change(self.main.repo_name, filename='file1',
+                content='line1\n', message='commit1', vcs_type='hg',
+                parent=None, newfile=True)
+        cs1 = fixture.commit_change(self.main.repo_name, filename='file2',
+                content='line2\n', message='commit2', vcs_type='hg',
+                parent=None, newfile=True)
+
+        refs, default = self.c._get_repo_refs(self.main.scm_instance, branch='default')
+        expected = 'branch:default:%s' % cs1.raw_id
+        self.assertEqual(default, expected)
+        self.assertIn(([(expected, 'default (current tip)')], 'Branches'), refs)
+
+    def test_repo_refs_one_branch_no_hints(self):
+        cs0 = fixture.commit_change(self.main.repo_name, filename='file1',
+                content='line1\n', message='commit1', vcs_type='hg',
+                parent=None, newfile=True)
+        # TODO