diff kallithea/tests/models/test_changeset_status.py @ 5039:36d81185efe4

changeset_status: add unit tests for calculation of overall status Add unit tests for the calculation of the review status of a changeset/pull request. To allow this, some reorganization of the ChangesetStatusModel is needed.
author Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
date Fri, 17 Apr 2015 14:49:37 +0200
parents
children 6b1e1437c026
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kallithea/tests/models/test_changeset_status.py	Fri Apr 17 14:49:37 2015 +0200
@@ -0,0 +1,38 @@
+from kallithea.tests import *
+from kallithea.model.changeset_status import ChangesetStatusModel
+from kallithea.model.db import ChangesetStatus
+
+# shorthands
+STATUS_APPROVED = ChangesetStatus.STATUS_APPROVED
+STATUS_REJECTED = ChangesetStatus.STATUS_REJECTED
+STATUS_NOT_REVIEWED = ChangesetStatus.STATUS_NOT_REVIEWED
+STATUS_UNDER_REVIEW = ChangesetStatus.STATUS_UNDER_REVIEW
+
+class ChangesetStatusMock(object):
+
+    def __init__(self, status):
+        self.status = status
+
+S = ChangesetStatusMock
+
+class TestChangesetStatusCalculation(BaseTestCase):
+
+    def setUp(self):
+        self.m = ChangesetStatusModel()
+
+    @parameterized.expand([
+        ('empty list', STATUS_UNDER_REVIEW, []),
+        ('approve', STATUS_APPROVED, [S(STATUS_APPROVED)]),
+        ('approve2', STATUS_APPROVED, [S(STATUS_APPROVED), S(STATUS_APPROVED)]),
+        ('approve_reject', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), S(STATUS_REJECTED)]),
+        ('approve_underreview', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), S(STATUS_UNDER_REVIEW)]),
+        ('approve_notreviewed', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), S(STATUS_NOT_REVIEWED)]),
+        ('underreview', STATUS_UNDER_REVIEW, [S(STATUS_UNDER_REVIEW), S(STATUS_UNDER_REVIEW)]),
+        ('reject', STATUS_UNDER_REVIEW, [S(STATUS_REJECTED)]),
+        ('reject_underreview', STATUS_UNDER_REVIEW, [S(STATUS_REJECTED), S(STATUS_UNDER_REVIEW)]),
+        ('reject_notreviewed', STATUS_UNDER_REVIEW, [S(STATUS_REJECTED), S(STATUS_NOT_REVIEWED)]),
+        ('notreviewed', STATUS_UNDER_REVIEW, [S(STATUS_NOT_REVIEWED)]),
+    ])
+    def test_result(self, name, expected_result, statuses):
+        result = self.m._calculate_status(statuses)
+        self.assertEqual(result, expected_result)