Skip to content

Commit

Permalink
Revise implementation and test
Browse files Browse the repository at this point in the history
  • Loading branch information
kayx23 committed Jan 16, 2022
1 parent c9c219e commit 946f450
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 19 deletions.
12 changes: 6 additions & 6 deletions jira/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
32 changes: 19 additions & 13 deletions tests/resources/test_project_statuses.py
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit 946f450

Please sign in to comment.