Skip to content
Merged
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
14 changes: 14 additions & 0 deletions constructor_io/modules/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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
'''
Expand Down
23 changes: 23 additions & 0 deletions tests/modules/test_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'''

Expand Down