diff --git a/smartsheet/reports.py b/smartsheet/reports.py index 09513d6..9fb2652 100644 --- a/smartsheet/reports.py +++ b/smartsheet/reports.py @@ -56,6 +56,26 @@ def delete_share(self, report_id, share_id) -> Union[Result[None], Error]: return response + def delete_report(self, report_id) -> Union[Result[None], Error]: + """Deletes a report based on the specified ID + + Args: + report_id (int): Report ID + + Returns: + Union[Result[None], Error]: The result of the operation, or an Error object if the request fails. + """ + _op = fresh_operation("delete_report") + _op["method"] = "DELETE" + _op["path"] = "/reports/" + str(report_id) + + expected = ["Result", None] + prepped_request = self._base.prepare_request(_op) + response = self._base.request(prepped_request, expected, _op) + + return response + + def get_report( self, report_id, page_size=None, page=None, include=None, level=None ) -> Union[Report, Error]: diff --git a/tests/mock_api/test_mock_api_reports.py b/tests/mock_api/test_mock_api_reports.py new file mode 100644 index 0000000..0b8cfca --- /dev/null +++ b/tests/mock_api/test_mock_api_reports.py @@ -0,0 +1,55 @@ +import uuid +from urllib.parse import urlparse + +from smartsheet.models import Error +from tests.mock_api.mock_api_test_helper import get_mock_api_client, get_wiremock_request + +REPORT_ID = 1234567890123456 + + +def test_delete_report_generated_url_is_correct(): + request_id = uuid.uuid4().hex + client = get_mock_api_client( + "/reports/delete-report/all-response-body-properties", request_id + ) + + client.Reports.delete_report(REPORT_ID) + + wiremock_request = get_wiremock_request(request_id) + url = urlparse(wiremock_request["absoluteUrl"]) + + assert url.path == f'/2.0/reports/{REPORT_ID}' + + +def test_delete_report(): + request_id = uuid.uuid4().hex + client = get_mock_api_client( + "/reports/delete-report/all-response-body-properties", request_id + ) + + response = client.Reports.delete_report(REPORT_ID) + + assert response.message == 'SUCCESS' + assert response.result_code == 0 + + +def test_delete_report_error_4xx(): + request_id = uuid.uuid4().hex + client = get_mock_api_client( + "/errors/400-response", request_id + ) + + response = client.Reports.delete_report(REPORT_ID) + + assert isinstance(response, Error) + + +def test_delete_report_error_5xx(): + request_id = uuid.uuid4().hex + client = get_mock_api_client( + "/errors/500-response", request_id + ) + + response = client.Reports.delete_report(REPORT_ID) + + assert isinstance(response, Error)