diff --git a/py_jama_rest_client/client.py b/py_jama_rest_client/client.py index 0d31baa..328dff3 100644 --- a/py_jama_rest_client/client.py +++ b/py_jama_rest_client/client.py @@ -115,6 +115,30 @@ def get_baselines_versioneditems(self, baseline_id): baseline_items = self.__get_all(resource_path) return baseline_items + def get_comments(self): + """ + Get all comments that are viewable to the user. + + Args: None + + Returns: A list of all the viewbale comments. + """ + resource_path = 'comments/' + comments = self.__get_all(resource_path) + return comments + + def get_comment(self, comment_id: int): + """ + Gets a single comment + + Args: comment id + + Returns: A single comment + """ + resource_path = 'comments/' + str(comment_id) + comments = self.__get_all(resource_path) + return comments + def get_projects(self): """This method will return all projects as JSON object :return: JSON Array of Item Objects. @@ -710,6 +734,37 @@ def post_item(self, project, item_type_id, child_item_type_id, location, fields, JamaClient.__handle_response_status(response) return response.json()['meta']['id'] + def post_comment(self, item_id: int, message: str, in_reply_to: int = None): + """ + Add a comment to an existing itme. + Args: + item_id: The API ID of the item to add the comment to + message: the message to be displayed + in_reply_to: optionally can reply to a specific comment + + Returns: 201 if successful + """ + body = { + "body": { + "text": message + }, + "commentType": "GENERAL", + "location": { + "item": item_id, + } + } + + if in_reply_to is not None: + body['inReplyTo'] = in_reply_to + + resource_path = 'comments/' + params = {} + + headers = {'content-type': 'application/json'} + response = self.__core.post(resource_path, data=json.dumps(body), headers=headers, params=params) + JamaClient.__handle_response_status(response) + return response.json()['meta']['id'] + def post_item_tag(self, item_id, tag_id): """ Add an existing tag to the item with the specified ID diff --git a/test/test_jamaClient.py b/test/test_jamaClient.py index a4c0f21..7d3235a 100644 --- a/test/test_jamaClient.py +++ b/test/test_jamaClient.py @@ -74,6 +74,15 @@ def test_get_relationships(self): self.assertIsNotNone(relationships) self.assertGreater(len(relationships), 1) + def test_get_comment(self): + item_id = 66972 + comments = self.jama_client.get_comment(item_id) + self.assertIsNotNone(comments) + + def test_get_comments(self): + comments = self.jama_client.get_comments() + self.assertIsNotNone(comments) + def test_get_tags(self): project_id = 116 tags = self.jama_client.get_tags(project_id) @@ -340,6 +349,12 @@ def test_post_item_attachment(self): res_status = self.jama_client.post_item_attachment(item_id, attachment_id) self.assertEqual(res_status, 201) + @unittest.skip('Entity Already Exists') + def test_post_comment(self): + item_id = 66972 + res_status = self.jama_client.post_comment(item_id, "this is a comment") + self.assertEqual(res_status, 201) + @unittest.skip('Entity Already Exists') def test_post_item_tag(self): item_id = 66972