Mercurial > kallithea
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)