diff --git a/kallithea/model/changeset_status.py b/kallithea/model/changeset_status.py --- a/kallithea/model/changeset_status.py +++ b/kallithea/model/changeset_status.py @@ -75,10 +75,10 @@ class ChangesetStatusModel(BaseModel): if not statuses: return ChangesetStatus.STATUS_UNDER_REVIEW - if all(st.status == ChangesetStatus.STATUS_APPROVED for st in statuses): + if all(st and st.status == ChangesetStatus.STATUS_APPROVED for st in statuses): return ChangesetStatus.STATUS_APPROVED - if any(st.status == ChangesetStatus.STATUS_REJECTED for st in statuses): + if any(st and st.status == ChangesetStatus.STATUS_REJECTED for st in statuses): return ChangesetStatus.STATUS_REJECTED return ChangesetStatus.STATUS_UNDER_REVIEW diff --git a/kallithea/tests/models/test_changeset_status.py b/kallithea/tests/models/test_changeset_status.py --- a/kallithea/tests/models/test_changeset_status.py +++ b/kallithea/tests/models/test_changeset_status.py @@ -32,6 +32,16 @@ class TestChangesetStatusCalculation(Bas ('reject_underreview', STATUS_REJECTED, [S(STATUS_REJECTED), S(STATUS_UNDER_REVIEW)]), ('reject_notreviewed', STATUS_REJECTED, [S(STATUS_REJECTED), S(STATUS_NOT_REVIEWED)]), ('notreviewed', STATUS_UNDER_REVIEW, [S(STATUS_NOT_REVIEWED)]), + ('approve_none', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), None]), + ('approve2_none', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), S(STATUS_APPROVED), None]), + ('approve_reject_none', STATUS_REJECTED, [S(STATUS_APPROVED), S(STATUS_REJECTED), None]), + ('approve_underreview_none', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), S(STATUS_UNDER_REVIEW), None]), + ('approve_notreviewed_none', STATUS_UNDER_REVIEW, [S(STATUS_APPROVED), S(STATUS_NOT_REVIEWED), None]), + ('underreview_none', STATUS_UNDER_REVIEW, [S(STATUS_UNDER_REVIEW), S(STATUS_UNDER_REVIEW), None]), + ('reject_none', STATUS_REJECTED, [S(STATUS_REJECTED), None]), + ('reject_underreview_none', STATUS_REJECTED, [S(STATUS_REJECTED), S(STATUS_UNDER_REVIEW), None]), + ('reject_notreviewed_none', STATUS_REJECTED, [S(STATUS_REJECTED), S(STATUS_NOT_REVIEWED), None]), + ('notreviewed_none', STATUS_UNDER_REVIEW, [S(STATUS_NOT_REVIEWED), None]), ]) def test_result(self, name, expected_result, statuses): result = self.m._calculate_status(statuses)