From 59623da434935926951f75794d228bfe0ba8ab83 Mon Sep 17 00:00:00 2001 From: Robert Wikman Date: Sat, 6 Mar 2021 23:28:08 +0100 Subject: [PATCH 1/3] Add support for string-type target to Resource.update --- pysnow/request.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pysnow/request.py b/pysnow/request.py index 1054c9b..64a3e7e 100644 --- a/pysnow/request.py +++ b/pysnow/request.py @@ -135,9 +135,13 @@ def update(self, query, payload): if not isinstance(payload, dict): raise InvalidUsage("Update payload must be of type dict") - record = self.get(query=query).one() + if isinstance(query, str): + sys_id = query + else: + record = self.get(query=query, fields=["sys_id"]).one() + sys_id = record["sys_id"] - self._url = self._get_custom_endpoint(record["sys_id"]) + self._url = self._get_custom_endpoint(sys_id) return self._get_response("PUT", data=json.dumps(payload)) def delete(self, query): From de274ebc8307e343a0257c0d180582bf6143e6c4 Mon Sep 17 00:00:00 2001 From: Robert Wikman Date: Sat, 6 Mar 2021 23:33:51 +0100 Subject: [PATCH 2/3] Use patch in Resource.update --- pysnow/request.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pysnow/request.py b/pysnow/request.py index 64a3e7e..4cf3aa7 100644 --- a/pysnow/request.py +++ b/pysnow/request.py @@ -138,11 +138,11 @@ def update(self, query, payload): if isinstance(query, str): sys_id = query else: - record = self.get(query=query, fields=["sys_id"]).one() + record = self.get(query=query).one() sys_id = record["sys_id"] self._url = self._get_custom_endpoint(sys_id) - return self._get_response("PUT", data=json.dumps(payload)) + return self._get_response("PATCH", data=json.dumps(payload)) def delete(self, query): """Deletes a record From d46585c3ff70f75099aff5a0b0427713bf3a3837 Mon Sep 17 00:00:00 2001 From: Robert Wikman Date: Sat, 6 Mar 2021 23:35:06 +0100 Subject: [PATCH 3/3] Add update-by-id test --- tests/test_resource.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/tests/test_resource.py b/tests/test_resource.py index 6dad7ae..595633e 100644 --- a/tests/test_resource.py +++ b/tests/test_resource.py @@ -530,6 +530,23 @@ def test_create(self): self.assertEquals(type(response.one()), dict) self.assertEquals(response.one(), self.record_response_create) + @httpretty.activate + def test_update_sysid(self): + """:meth:`update` should return a dictionary of the updated record""" + + sys_id = self.record_response_get_one[0]["sys_id"] + + httpretty.register_uri( + httpretty.PATCH, + self.mock_url_builder_sys_id, + body=get_serialized_result(self.record_response_update), + status=200, + content_type="application/json", + ) + + updated = self.resource.update(sys_id, self.record_response_update) + self.assertEquals(self.record_response_update["attr1"], updated["attr1"]) + @httpretty.activate def test_update(self): """:meth:`update` should return a dictionary of the updated record""" @@ -543,7 +560,7 @@ def test_update(self): ) httpretty.register_uri( - httpretty.PUT, + httpretty.PATCH, self.mock_url_builder_sys_id, body=get_serialized_result(self.record_response_update), status=200, @@ -772,7 +789,7 @@ def test_response_update(self): ) httpretty.register_uri( - httpretty.PUT, + httpretty.PATCH, self.mock_url_builder_sys_id, body=get_serialized_result(self.record_response_update), status=200,