mirror of
https://github.com/sartography/cr-connect-workflow.git
synced 2025-02-22 12:48:25 +00:00
Bug fix for modify_template.
We were not checking whether the file was archived
This commit is contained in:
parent
58e85f84e8
commit
2b0d106be5
@ -47,6 +47,7 @@ class ModifySpreadsheet(Script):
|
||||
spreadsheet = session.query(FileModel). \
|
||||
filter(FileModel.workflow_id == workflow_id). \
|
||||
filter(FileModel.irb_doc_code == parameters['irb_doc_code']).\
|
||||
filter(FileModel.archived == False).\
|
||||
first()
|
||||
if spreadsheet:
|
||||
workbook = load_workbook(BytesIO(spreadsheet.data))
|
||||
|
BIN
tests/data/modify_spreadsheet/test_spreadsheet_2.xlsx
Normal file
BIN
tests/data/modify_spreadsheet/test_spreadsheet_2.xlsx
Normal file
Binary file not shown.
@ -12,9 +12,13 @@ import os
|
||||
|
||||
class TestModifySpreadsheet(BaseTest):
|
||||
|
||||
def upload_spreadsheet(self, workflow, task, irb_doc_code):
|
||||
irb_doc_code = 'Finance_BCA'
|
||||
cell_indicator = 'C4'
|
||||
input_text = 'This is my input text.'
|
||||
|
||||
def upload_spreadsheet(self, workflow, task, irb_doc_code, spreadsheet_name='test_spreadsheet.xlsx'):
|
||||
filepath = os.path.join(app.root_path, '..', 'tests', 'data',
|
||||
'modify_spreadsheet', 'test_spreadsheet.xlsx')
|
||||
'modify_spreadsheet', spreadsheet_name)
|
||||
with open(filepath, 'br') as f_open:
|
||||
ss_data = f_open.read()
|
||||
|
||||
@ -30,39 +34,73 @@ class TestModifySpreadsheet(BaseTest):
|
||||
spreadsheet = session.query(FileModel). \
|
||||
filter(FileModel.workflow_id == workflow_id). \
|
||||
filter(FileModel.irb_doc_code == irb_doc_code). \
|
||||
filter(FileModel.archived == False). \
|
||||
first()
|
||||
workbook = load_workbook(BytesIO(spreadsheet.data))
|
||||
sheet = workbook.active
|
||||
return sheet
|
||||
|
||||
def test_modify_spreadsheet(self):
|
||||
irb_doc_code = 'Finance_BCA'
|
||||
cell_indicator = 'C4'
|
||||
input_text = 'This is my input text.'
|
||||
|
||||
workflow = self.create_workflow('modify_spreadsheet')
|
||||
workflow_api = self.get_workflow_api(workflow)
|
||||
task = workflow_api.next_task
|
||||
|
||||
workflow_api = self.upload_spreadsheet(workflow, task, irb_doc_code)
|
||||
workflow_api = self.upload_spreadsheet(workflow, task, self.irb_doc_code)
|
||||
|
||||
sheet = self.get_sheet(workflow.id, irb_doc_code)
|
||||
self.assertEqual(None, sheet[cell_indicator].value)
|
||||
sheet = self.get_sheet(workflow.id, self.irb_doc_code)
|
||||
self.assertEqual(None, sheet[self.cell_indicator].value)
|
||||
|
||||
task = workflow_api.next_task
|
||||
self.complete_form(workflow, task, {'cell_indicator': cell_indicator,
|
||||
'input_text': input_text})
|
||||
self.complete_form(workflow, task, {'cell_indicator': self.cell_indicator,
|
||||
'input_text': self.input_text})
|
||||
|
||||
sheet = self.get_sheet(workflow.id, irb_doc_code)
|
||||
self.assertEqual(input_text, sheet[cell_indicator].value)
|
||||
sheet = self.get_sheet(workflow.id, self.irb_doc_code)
|
||||
self.assertEqual(self.input_text, sheet[self.cell_indicator].value)
|
||||
|
||||
def test_modify_spreadsheet_multiple_versions_of_spreadsheet(self):
|
||||
"""This test ensures that we get the correct version of the spreadsheet if multiple versions are uploaded.
|
||||
I.e., we get the current version and not any archived versions
|
||||
"""
|
||||
workflow = self.create_workflow('modify_spreadsheet')
|
||||
workflow_api = self.get_workflow_api(workflow)
|
||||
task = workflow_api.next_task
|
||||
|
||||
self.upload_spreadsheet(workflow, task, self.irb_doc_code, 'test_spreadsheet.xlsx')
|
||||
files = FileModel.query\
|
||||
.filter(FileModel.workflow_id == workflow.id)\
|
||||
.filter(FileModel.irb_doc_code == self.irb_doc_code)\
|
||||
.all()
|
||||
assert len(files) == 1
|
||||
assert files[0].archived is False
|
||||
UserFileService().delete_file(files[0].id)
|
||||
|
||||
workflow_api = self.restart_workflow_api(workflow)
|
||||
task = workflow_api.next_task
|
||||
assert task.name == "Activity_FileUpload"
|
||||
workflow_api = self.upload_spreadsheet(workflow, task, self.irb_doc_code, 'test_spreadsheet_2.xlsx')
|
||||
files = FileModel.query\
|
||||
.filter(FileModel.workflow_id == workflow.id)\
|
||||
.filter(FileModel.irb_doc_code == self.irb_doc_code)\
|
||||
.all()
|
||||
assert len(files) == 2
|
||||
assert files[0].archived is True
|
||||
assert files[1].archived is False
|
||||
|
||||
task = workflow_api.next_task
|
||||
assert task.name == "Activity_GetModifyData"
|
||||
|
||||
data = {"cell_indicator": "B4", "input_text": "Just some text"}
|
||||
self.complete_form(workflow, task, data)
|
||||
|
||||
sheet = self.get_sheet(workflow.id, self.irb_doc_code)
|
||||
self.assertEqual("Just some text", sheet["B4"].value)
|
||||
|
||||
def test_missing_spreadsheet(self):
|
||||
"""The modify_spreadsheet has Finance_BCA hard-coded as the spreadsheet to modify.
|
||||
In this test we upload a spreadsheet with a different doc code,
|
||||
and assert that we raise an error when the Finance_BCA spreadsheet does not exist"""
|
||||
irb_doc_code = 'Finance_GPRF'
|
||||
cell_indicator = 'C4'
|
||||
input_text = 'This is my input text.'
|
||||
|
||||
workflow = self.create_workflow('modify_spreadsheet')
|
||||
workflow_api = self.get_workflow_api(workflow)
|
||||
@ -71,5 +109,5 @@ class TestModifySpreadsheet(BaseTest):
|
||||
workflow_api = self.upload_spreadsheet(workflow, task, irb_doc_code)
|
||||
task = workflow_api.next_task
|
||||
with self.assertRaises(AssertionError):
|
||||
self.complete_form(workflow, task, {'cell_indicator': cell_indicator,
|
||||
'input_text': input_text})
|
||||
self.complete_form(workflow, task, {'cell_indicator': self.cell_indicator,
|
||||
'input_text': self.input_text})
|
||||
|
Loading…
x
Reference in New Issue
Block a user