Skip to content

Commit

Permalink
Add functions to find version by name and to rename version (#724)
Browse files Browse the repository at this point in the history
Fixes: #724
  • Loading branch information
mhienle authored and ssbarnea committed Feb 13, 2019
1 parent 67e9508 commit bdee182
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
31 changes: 31 additions & 0 deletions jira/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -2283,6 +2283,37 @@ def project_versions(self, project):
Version(self._options, self._session, raw_ver_json) for raw_ver_json in r_json]
return versions

@translate_resource_args
def get_project_version_by_name(self, project, version_name):
"""Get a version Resource by its name present on a project.
:param project: ID or key of the project to get versions from
:type project: str
:param version_name: name of the version to search for
:type version_name: str
:rtype: Optional[Version]
"""
versions = self.project_versions(project)
for version in versions:
if version.name == version_name:
return version

@translate_resource_args
def rename_version(self, project, old_name, new_name):
"""Rename a version Resource on a project.
:param project: ID or key of the project to get versions from
:type project: str
:param old_name: old name of the version to rename
:type old_name: str
:param new_name: new name of the version to rename
:type new_name: str
:rtype: None
"""
version = self.get_project_version_by_name(project, old_name)
if version:
version.update(name=new_name)

# non-resource
@translate_resource_args
def project_roles(self, project):
Expand Down
39 changes: 39 additions & 0 deletions tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1546,6 +1546,45 @@ def test_project_versions(self):
'fixVersions': [{'id': version.id}]})
version.delete()

def test_get_project_version_by_name(self):
name = "version-%s" % rndstr()
version = self.jira.create_version(name,
self.project_b, "will be deleted soon")

found_version = self.jira.get_project_version_by_name(self.project_b, name)
self.assertEqual(found_version.id, version.id)
self.assertEqual(found_version.name, name)

not_found_version = self.jira.get_project_version_by_name(self.project_b, "non-existent")
self.assertEqual(not_found_version, None)

i = self.jira.issue(JiraTestManager().project_b_issue1)
i.update(fields={
'versions': [{'id': version.id}],
'fixVersions': [{'id': version.id}]})
version.delete()

def test_rename_version(self):
old_name = "version-%s" % rndstr()
version = self.jira.create_version(old_name,
self.project_b, "will be deleted soon")

new_name = old_name + "-renamed"
self.jira.rename_version(self.project_b, old_name, new_name)

found_version = self.jira.get_project_version_by_name(self.project_b, new_name)
self.assertEqual(found_version.id, version.id)
self.assertEqual(found_version.name, new_name)

not_found_version = self.jira.get_project_version_by_name(self.project_b, old_name)
self.assertEqual(not_found_version, None)

i = self.jira.issue(JiraTestManager().project_b_issue1)
i.update(fields={
'versions': [{'id': version.id}],
'fixVersions': [{'id': version.id}]})
version.delete()

def test_project_versions_with_project_obj(self):
name = "version-%s" % rndstr()
version = self.jira.create_version(name,
Expand Down

0 comments on commit bdee182

Please sign in to comment.