Skip to content

Commit 45c9313

Browse files
authored
[CSL-1687] Support additional query parameters in Tasks modules (#44)
1 parent 9d59f24 commit 45c9313

2 files changed

Lines changed: 37 additions & 0 deletions

File tree

constructor_io/modules/tasks.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@ def _create_tasks_url(url_prefix, parameters, options, api_version='v1'):
1616

1717
query_params = create_shared_query_params(options, parameters, {})
1818
query_params.pop('c')
19+
20+
if parameters:
21+
if parameters.get('start_date'):
22+
query_params['start_date'] = parameters.get('start_date')
23+
24+
if parameters.get('end_date'):
25+
query_params['end_date'] = parameters.get('end_date')
26+
27+
if parameters.get('status'):
28+
query_params['status'] = parameters.get('status')
29+
1930
query_params = clean_params(query_params)
2031
query_string = urlencode(query_params, doseq=True)
2132

@@ -34,6 +45,9 @@ def get_all_tasks(self, parameters=None):
3445
3546
:param dict parameters: Additional parameters for task details
3647
:param int parameters.page: The page number of the results
48+
:param string parameters.start_date: The start date of results to return - YYYY-MM-DD
49+
:param string parameters.end_date: The end date of results to return - YYYY-MM-DD
50+
:param string parameters.status: The status of tasks to return - 'QUEUED', 'IN_PROGRESS', 'DONE', 'FAILED', 'CANCELED'
3751
:param int parameters.results_per_page: The number of results per page to return
3852
:return: dict
3953
'''

tests/modules/test_tasks.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,29 @@ def test_get_all_tasks_with_params():
5454
assert isinstance(response.get('total_count'), int)
5555
assert len(response.get('tasks')) <= 50 and len(response.get('tasks')) >= 1
5656

57+
def test_get_all_tasks_with_start_date_and_end_date():
58+
'''Should return a response when start_date and end_date are passed'''
59+
60+
tasks = ConstructorIO(VALID_OPTIONS).tasks
61+
response = tasks.get_all_tasks({ 'start_date': '2022-09-03', 'end_date': '2022-09-30' })
62+
63+
assert isinstance(response.get('status_counts'), dict)
64+
assert isinstance(response.get('tasks'), list)
65+
assert isinstance(response.get('total_count'), int)
66+
assert len(response.get('tasks')) <= 50 and len(response.get('tasks')) >= 1
67+
68+
def test_get_all_tasks_with_status():
69+
'''Should return a response when status is passed'''
70+
71+
tasks = ConstructorIO(VALID_OPTIONS).tasks
72+
response = tasks.get_all_tasks({ 'status': 'DONE' })
73+
74+
assert isinstance(response.get('status_counts'), dict)
75+
assert isinstance(response.get('tasks'), list)
76+
assert isinstance(response.get('total_count'), int)
77+
assert response.get('tasks')[0].get('status') == 'DONE'
78+
assert len(response.get('tasks')) <= 50 and len(response.get('tasks')) >= 1
79+
5780
def test_get_all_tasks_with_invalid_api_key():
5881
'''Should raise exception when invalid api_key is provided'''
5982

0 commit comments

Comments
 (0)