Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions smartsheet/reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]:
Expand Down
55 changes: 55 additions & 0 deletions tests/mock_api/test_mock_api_reports.py
Original file line number Diff line number Diff line change
@@ -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)
Loading