Skip to content

Commit

Permalink
Merge pull request #4 from Scifabric/handle-empty
Browse files Browse the repository at this point in the history
Fixes.
  • Loading branch information
teleyinex committed Jul 3, 2018
2 parents c0cbfee + 3809dec commit 5bfc779
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 9 deletions.
12 changes: 10 additions & 2 deletions analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,10 @@ def basic(**kwargs):
msg = "The five taskruns reported no animal"
if type(vc) == pd.Series and ((str(vc.index[0]) == 'nan' or
vc.index[0] == -1) and vc.values[0] == 5):
return msg
result = enki.pbclient.find_results(project_id=kwargs['project_id'],
id=kwargs['result_id'],all=1)[0]

return create_result(t, settings.no_animal, result)
else:
task = get_task(t.project_id, t.id)
task.n_answers += 1
Expand All @@ -219,7 +222,7 @@ def basic(**kwargs):
result = enki.pbclient.find_results(project_id=kwargs['project_id'],
id=kwargs['result_id'],all=1)[0]

return create_result(t, 'no animal', result)
return create_result(t, settings.no_animal, result)
else:
answers = get_consensus(df, th=10)
if len(answers) == 0:
Expand All @@ -229,6 +232,11 @@ def basic(**kwargs):
task.n_answers += 1
task.state = 'ongoing'
return enki.pbclient.update_task(task)
else:
result = enki.pbclient.find_results(project_id=kwargs['project_id'],
id=kwargs['result_id'],all=1)[0]

return create_result(t, settings.no_consensus, result)
else:
for a in answers:
iucn_red_list_status, species = get_red_list_status(a['speciesScientificName'], project_id)
Expand Down
4 changes: 4 additions & 0 deletions settings.py.template
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@ endpoint = 'http://localhost:5001'
enable_background_jobs = False
# Queue name: use your own name in case you're using also python-rq
queue_name = 'mywebhooks'
# String for no animal
no_animal = 'no animal'
# String for no consensus
no_consensus = 'no consensus'
4 changes: 4 additions & 0 deletions settings_testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@
enable_background_jobs = True
# Queue name: use your own name in case you're using also python-rq
queue_name = 'mywebhooks'
# String for no animal
no_animal = 'no animal'
# String for no consensus
no_consensus = 'no consensus'
78 changes: 71 additions & 7 deletions test/test_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,14 +141,29 @@ def test_basic_5_taskruns(self, enki_mock, pbclient):
task.n_answers = 5
task.state = 'completed'
enki_mock.tasks = [task]
result = MagicMock
result.id = 1
result.task_id = 1
result.project_id = 1
updated_result = MagicMock
updated_result.info = dict(
speciesCommonName=settings.no_animal,
iucn_red_list_status=settings.no_animal,
imageURL=task.info.get('image', None),
deploymentID=task.info.get('deploymentID', None),
deploymentLocationID=task.info.get('deploymentLocationID', None),
Create_time=task.info.get('Create_time'))
pbclient.find_results.return_value = [result]
pbclient.update_result.return_value = updated_result
enki_mock.pbclient = pbclient
task_runs = []
for i in range(5):
task_runs.append(self.create_task_runs_no_animal())
enki_mock.task_runs = dict([(task.id,task_runs)])

res = basic(**self.payload)
assert res == 'The five taskruns reported no animal', res
assert res.info['iucn_red_list_status'] == settings.no_animal
assert res.info['speciesCommonName'] == settings.no_animal

@patch('enki.pbclient', autospec=True)
@patch('enki.Enki', autospec=True)
Expand Down Expand Up @@ -241,7 +256,20 @@ def test_basic_10_nan_(self, enki_mock, pbclient):
task.n_answers = 10
task.state = 'completed'
enki_mock.tasks = [task]
pbclient.update_result.return_value = '10 taskruns reported no animal'
result = MagicMock
result.id = 1
result.task_id = 1
result.project_id = 1
updated_result = MagicMock
updated_result.info = dict(
speciesCommonName=settings.no_animal,
iucn_red_list_status=settings.no_animal,
imageURL=task.info.get('image', None),
deploymentID=task.info.get('deploymentID', None),
deploymentLocationID=task.info.get('deploymentLocationID', None),
Create_time=task.info.get('Create_time'))
pbclient.find_results.return_value = [result]
pbclient.update_result.return_value = updated_result
enki_mock.pbclient = pbclient
task_runs = []
for i in range(10):
Expand All @@ -250,7 +278,8 @@ def test_basic_10_nan_(self, enki_mock, pbclient):

res = basic(**self.payload)
assert task.n_answers == 10, task.n_answers
assert res == "10 taskruns reported no animal", res
assert res.info['iucn_red_list_status'] == settings.no_animal
assert res.info['speciesCommonName'] == settings.no_animal


@patch('enki.pbclient', autospec=True)
Expand All @@ -260,13 +289,27 @@ def test_basic_10_nan_2_animal(self, enki_mock, pbclient):
enki_mock = enki.Enki(endpoint='server',
api_key='api',
project_short_name='project')
pbclient.update_result.return_value = '10 taskruns reported no animal'
enki_mock.pbclient = pbclient
task = MagicMock()
task.id = 1
task.project_id = 1
task.n_answers = 12
task.state = 'completed'

result = MagicMock
result.id = 1
result.task_id = 1
result.project_id = 1
updated_result = MagicMock
updated_result.info = dict(
speciesCommonName=settings.no_animal,
iucn_red_list_status=settings.no_animal,
imageURL=task.info.get('image', None),
deploymentID=task.info.get('deploymentID', None),
deploymentLocationID=task.info.get('deploymentLocationID', None),
Create_time=task.info.get('Create_time'))
pbclient.find_results.return_value = [result]
pbclient.update_result.return_value = updated_result
enki_mock.pbclient = pbclient
enki_mock.tasks = [task]
task_runs = []
task_runs.append(self.create_task_runs_animal())
Expand All @@ -278,7 +321,9 @@ def test_basic_10_nan_2_animal(self, enki_mock, pbclient):
res = basic(**self.payload)
assert task.n_answers == 12, task.n_answers
assert task.state == 'completed', task.state
assert res == "10 taskruns reported no animal", res
assert res.info['iucn_red_list_status'] == settings.no_animal
assert res.info['speciesCommonName'] == settings.no_animal


@patch('enki.pbclient', autospec=True)
@patch('enki.Enki', autospec=True)
Expand Down Expand Up @@ -395,12 +440,28 @@ def test_basic_25_animal(self, enki_mock, pbclient):
enki_mock = enki.Enki(endpoint='server',
api_key='api',
project_short_name='project')
enki_mock.pbclient = pbclient
task = MagicMock()
task.id = 1
task.project_id = 1
task.n_answers = 25
task.state = 'completed'

result = MagicMock
result.id = 1
result.task_id = 1
result.project_id = 1
updated_result = MagicMock
updated_result.info = dict(
speciesCommonName=settings.no_consensus,
iucn_red_list_status=settings.no_consensus,
imageURL=task.info.get('image', None),
deploymentID=task.info.get('deploymentID', None),
deploymentLocationID=task.info.get('deploymentLocationID', None),
Create_time=task.info.get('Create_time'))
pbclient.find_results.return_value = [result]
pbclient.update_result.return_value = updated_result

enki_mock.pbclient = pbclient
enki_mock.tasks = [task]
task_runs = []
for i in range(9):
Expand All @@ -412,6 +473,9 @@ def test_basic_25_animal(self, enki_mock, pbclient):
enki_mock.task_runs = dict([(task.id,task_runs)])

res = basic(**self.payload)
assert res.info['iucn_red_list_status'] == settings.no_consensus
assert res.info['speciesCommonName'] == settings.no_consensus

assert task.n_answers == 25, task.n_answers
assert task.state == 'completed', task.state

Expand Down

0 comments on commit 5bfc779

Please sign in to comment.