From 946f4500c00d297e57bc1e25d412d4d46eab1a79 Mon Sep 17 00:00:00 2001 From: Traky Date: Sun, 16 Jan 2022 18:09:23 -0500 Subject: [PATCH] Revise implementation and test --- jira/client.py | 12 ++++----- tests/resources/test_project_statuses.py | 32 ++++++++++++++---------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/jira/client.py b/jira/client.py index 329af4c0f..af195577d 100644 --- a/jira/client.py +++ b/jira/client.py @@ -2927,18 +2927,18 @@ def statuses(self) -> List[Status]: ] return statuses - def project_statuses(self, projectIdOrKey: str) -> List[Status]: - """Get a list of statuses available within a project from the server. + def project_statuses_by_issue_type(self, projectIdOrKey: str) -> List[IssueType]: + """Get a list of issue types available within the project with available statuses within each issue type, as each project has a set of valid issue types and each issue type has a set of valid statuses. Returns: - List[Status] + List[IssueType] """ r_json = self._get_json(f"project/{projectIdOrKey}/statuses") - statuses = [ - Status(self._options, self._session, raw_stat_json) + issue_types = [ + IssueType(self._options, self._session, raw_stat_json) for raw_stat_json in r_json ] - return statuses + return issue_types def status(self, id: str) -> Status: """Get a status Resource from the server. diff --git a/tests/resources/test_project_statuses.py b/tests/resources/test_project_statuses.py index 0a8d437d0..9e6a52379 100644 --- a/tests/resources/test_project_statuses.py +++ b/tests/resources/test_project_statuses.py @@ -1,18 +1,24 @@ from tests.conftest import JiraTestCase -class ProjectStatusesTests(JiraTestCase): - def test_project_statuses(self): - project_statuses = self.jira.project_statuses(self.project_a) +class ProjectStatusesByIssueTypeTests(JiraTestCase): + def test_project_statuses_by_issue_type(self): + issue_types = self.jira.project_statuses_by_issue(self.project_a) - # project should have at least one status - self.assertGreater(len(project_statuses), 0) + # should have at least one issue type within the project + self.assertGreater(len(issue_types), 0) - # first project status - project_status = project_statuses[0] - # test statues id - self_status_id = self.jira.status(project_status.id).id - self.assertEqual(self_status_id, project_status.id) - # test statues name - self_status_name = self.jira.status(project_status.name).name - self.assertEqual(self_status_name, project_status.name) + # get unique statuses across all issue types + statuses = [] + for issue_type in issue_types: + # should have at least one valid status within an issue type by endpoint documentation + self.assertGreater(len(issue_type.statuses), 0) + statuses.extend(issue_type.statuses) + unique_statuses = list(set(statuses)) + + # test status id and name for each status within the project + for status in unique_statuses: + self_status_id = self.jira.status(status.id).id + self.assertEqual(self_status_id, status.id) + self_status_name = self.jira.status(status.name).name + self.assertEqual(self_status_name, status.name)