From 594279df36442a7376b4e6f136df81f93111733d Mon Sep 17 00:00:00 2001 From: Enes Kutay SEZEN Date: Thu, 13 Oct 2022 15:51:42 +0300 Subject: [PATCH] Add support for additional parameters --- constructor_io/modules/tasks.py | 14 ++++++++++++++ tests/modules/test_tasks.py | 23 +++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/constructor_io/modules/tasks.py b/constructor_io/modules/tasks.py index 5d9359c..75d7033 100644 --- a/constructor_io/modules/tasks.py +++ b/constructor_io/modules/tasks.py @@ -16,6 +16,17 @@ def _create_tasks_url(url_prefix, parameters, options, api_version='v1'): query_params = create_shared_query_params(options, parameters, {}) query_params.pop('c') + + if parameters: + if parameters.get('start_date'): + query_params['start_date'] = parameters.get('start_date') + + if parameters.get('end_date'): + query_params['end_date'] = parameters.get('end_date') + + if parameters.get('status'): + query_params['status'] = parameters.get('status') + query_params = clean_params(query_params) query_string = urlencode(query_params, doseq=True) @@ -34,6 +45,9 @@ def get_all_tasks(self, parameters=None): :param dict parameters: Additional parameters for task details :param int parameters.page: The page number of the results + :param string parameters.start_date: The start date of results to return - YYYY-MM-DD + :param string parameters.end_date: The end date of results to return - YYYY-MM-DD + :param string parameters.status: The status of tasks to return - 'QUEUED', 'IN_PROGRESS', 'DONE', 'FAILED', 'CANCELED' :param int parameters.results_per_page: The number of results per page to return :return: dict ''' diff --git a/tests/modules/test_tasks.py b/tests/modules/test_tasks.py index 121fca4..7780f18 100644 --- a/tests/modules/test_tasks.py +++ b/tests/modules/test_tasks.py @@ -54,6 +54,29 @@ def test_get_all_tasks_with_params(): assert isinstance(response.get('total_count'), int) assert len(response.get('tasks')) <= 50 and len(response.get('tasks')) >= 1 +def test_get_all_tasks_with_start_date_and_end_date(): + '''Should return a response when start_date and end_date are passed''' + + tasks = ConstructorIO(VALID_OPTIONS).tasks + response = tasks.get_all_tasks({ 'start_date': '2022-09-03', 'end_date': '2022-09-30' }) + + assert isinstance(response.get('status_counts'), dict) + assert isinstance(response.get('tasks'), list) + assert isinstance(response.get('total_count'), int) + assert len(response.get('tasks')) <= 50 and len(response.get('tasks')) >= 1 + +def test_get_all_tasks_with_status(): + '''Should return a response when status is passed''' + + tasks = ConstructorIO(VALID_OPTIONS).tasks + response = tasks.get_all_tasks({ 'status': 'DONE' }) + + assert isinstance(response.get('status_counts'), dict) + assert isinstance(response.get('tasks'), list) + assert isinstance(response.get('total_count'), int) + assert response.get('tasks')[0].get('status') == 'DONE' + assert len(response.get('tasks')) <= 50 and len(response.get('tasks')) >= 1 + def test_get_all_tasks_with_invalid_api_key(): '''Should raise exception when invalid api_key is provided'''