Skip to content
Snippets Groups Projects
Commit 882d876f authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'typeerror-no-last-run' into 'master'

Fix TypeError when a DataImport has an empty workflow

See merge request !582
parents 010de0eb 3755e419
No related branches found
No related tags found
1 merge request!582Fix TypeError when a DataImport has an empty workflow
......@@ -39,6 +39,9 @@ class DataImport(IndexableModel):
return State.Unscheduled
# This allows annotating a DataImport queryset with "last_run" and preventing duplicate SQL queries
if hasattr(self, 'last_run'):
# last_run may be None when there is a workflow without any tasks
if self.last_run is None:
return State.Unscheduled
return self.workflow.get_state(self.last_run)
else:
return self.workflow.state
......
......@@ -93,6 +93,21 @@ class TestImports(FixtureAPITestCase):
self.assertEqual(len(data['results']), 1)
self.assertEqual(data['results'][0]['id'], str(dataimport2.id))
def test_list_no_tasks(self):
"""
Ensure the DataImport reports an Unscheduled state when there are no tasks in its workflow
"""
self.assertIsNone(self.dataimport.workflow)
self.dataimport.start()
self.dataimport.workflow.tasks.all().delete()
self.client.force_login(self.user)
response = self.client.get(reverse('api:import-list'))
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertEqual(len(data['results']), 1)
self.assertEqual(data['results'][0]['state'], State.Unscheduled.value)
def test_details_requires_login(self):
response = self.client.get(reverse('api:import-details', kwargs={'pk': self.dataimport.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
......@@ -133,6 +148,19 @@ class TestImports(FixtureAPITestCase):
data = response.json()
self.assertEqual(data['id'], str(self.dataimport.id))
def test_details_no_tasks(self):
"""
Ensure the DataImport reports an Unscheduled state when there are no tasks in its workflow
"""
self.assertIsNone(self.dataimport.workflow)
self.dataimport.start()
self.dataimport.workflow.tasks.all().delete()
self.client.force_login(self.user)
response = self.client.get(reverse('api:import-details', kwargs={'pk': self.dataimport.id}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertEqual(data['state'], State.Unscheduled.value)
def test_retry_requires_login(self):
response = self.client.post(reverse('api:import-retry', kwargs={'pk': self.dataimport.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment