mirror of
https://github.com/sartography/cr-connect-workflow.git
synced 2025-02-23 13:18:35 +00:00
79 lines
3.2 KiB
Python
79 lines
3.2 KiB
Python
from tests.base_test import BaseTest
|
|
|
|
from crc import app, session
|
|
from crc.models.file import FileModel, FileDataModel
|
|
from crc.services.user_file_service import UserFileService
|
|
|
|
from io import BytesIO
|
|
from openpyxl import load_workbook
|
|
|
|
import os
|
|
|
|
|
|
class TestModifySpreadsheet(BaseTest):
|
|
|
|
def upload_spreadsheet(self, workflow, task, irb_doc_code):
|
|
filepath = os.path.join(app.root_path, '..', 'tests', 'data',
|
|
'modify_spreadsheet', 'test_spreadsheet.xlsx')
|
|
with open(filepath, 'br') as f_open:
|
|
ss_data = f_open.read()
|
|
|
|
file_model = UserFileService.add_workflow_file(workflow_id=workflow.id,
|
|
task_spec_name=task.name,
|
|
name="test_spreadsheet.xlsx", content_type="text",
|
|
binary_data=ss_data, irb_doc_code=irb_doc_code)
|
|
workflow_api = self.complete_form(workflow, task, {irb_doc_code: {'id': file_model.id}})
|
|
return workflow_api
|
|
|
|
@staticmethod
|
|
def get_sheet(workflow_id, irb_doc_code):
|
|
spreadsheet = session.query(FileModel). \
|
|
filter(FileModel.workflow_id == workflow_id). \
|
|
filter(FileModel.irb_doc_code == irb_doc_code). \
|
|
first()
|
|
spreadsheet_data = session.query(FileDataModel). \
|
|
filter(FileDataModel.file_model_id == spreadsheet.id). \
|
|
first()
|
|
workbook = load_workbook(BytesIO(spreadsheet_data.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)
|
|
|
|
sheet = self.get_sheet(workflow.id, irb_doc_code)
|
|
self.assertEqual(None, sheet[cell_indicator].value)
|
|
|
|
task = workflow_api.next_task
|
|
self.complete_form(workflow, task, {'cell_indicator': cell_indicator,
|
|
'input_text': input_text})
|
|
|
|
sheet = self.get_sheet(workflow.id, irb_doc_code)
|
|
self.assertEqual(input_text, sheet[cell_indicator].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)
|
|
task = workflow_api.next_task
|
|
|
|
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})
|