diff --git a/tableauserverclient/server/endpoint/tasks_endpoint.py b/tableauserverclient/server/endpoint/tasks_endpoint.py index 1c93181df..7df5bc0ad 100644 --- a/tableauserverclient/server/endpoint/tasks_endpoint.py +++ b/tableauserverclient/server/endpoint/tasks_endpoint.py @@ -42,3 +42,13 @@ def run(self, task_item): run_req = RequestFactory.Task.run_req(task_item) server_response = self.post_request(url, run_req) return server_response.content + + # Delete 1 task by id + @api(version="3.6") + def delete(self, task_id): + if not task_id: + error = "No Task ID provided" + raise ValueError(error) + url = "{0}/{1}".format(self.baseurl, task_id) + self.delete_request(url) + logger.info('Deleted single task (ID: {0})'.format(task_id)) diff --git a/test/test_task.py b/test/test_task.py index 2529f811a..ea22a24c7 100644 --- a/test/test_task.py +++ b/test/test_task.py @@ -14,7 +14,7 @@ class TaskTests(unittest.TestCase): def setUp(self): self.server = TSC.Server("http://test") - self.server.version = '2.6' + self.server.version = '3.6' # Fake Signin self.server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67" @@ -76,3 +76,11 @@ def test_get_task_with_schedule(self): self.assertEqual('c7a9327e-1cda-4504-b026-ddb43b976d1d', task.target.id) self.assertEqual('workbook', task.target.type) self.assertEqual('b60b4efd-a6f7-4599-beb3-cb677e7abac1', task.schedule_id) + + def test_delete(self): + with requests_mock.mock() as m: + m.delete(self.baseurl + '/c7a9327e-1cda-4504-b026-ddb43b976d1d', status_code=204) + self.server.tasks.delete('c7a9327e-1cda-4504-b026-ddb43b976d1d') + + def test_delete_missing_id(self): + self.assertRaises(ValueError, self.server.tasks.delete, '')