From a536a79e8763d50770a11969ac40dbbfd249cc73 Mon Sep 17 00:00:00 2001 From: mike cullerton Date: Sat, 12 Mar 2022 14:29:02 -0500 Subject: [PATCH] Test for downloading logs --- tests/study/test_study_download_logs.py | 50 ++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/tests/study/test_study_download_logs.py b/tests/study/test_study_download_logs.py index 6ad9c83c..87bd3681 100644 --- a/tests/study/test_study_download_logs.py +++ b/tests/study/test_study_download_logs.py @@ -1,14 +1,54 @@ from tests.base_test import BaseTest -from crc.api.study import download_logs_for_study +from crc import session +from crc.models.task_log import TaskLogModel + +from openpyxl import load_workbook +from io import BytesIO class TestDownloadLogsForStudy(BaseTest): + @staticmethod + def add_log(study_id, workflow_id, task, workflow_spec_id, log_data): + task_log = TaskLogModel(level=log_data['level'], + code=log_data['code'], + message=log_data['message'], + study_id=study_id, + workflow_id=workflow_id, + task=task, + user_uid='joe', + workflow_spec_id=workflow_spec_id) + session.add(task_log) + session.commit() - # TODO: finish writing tests def test_download_logs_for_study(self): + workflow = self.create_workflow('empty_workflow') + workflow_api = self.get_workflow_api(workflow) + task = workflow_api.next_task + study_id = workflow.study_id - study_id = 6 - result = download_logs_for_study(study_id) + log_data = {'level': 'metrics', + 'code': 'test_code', + 'message': 'This is a message.'} + self.add_log(study_id, workflow.id, task.name, 'empty_workflow', log_data) + log_data = {'level': 'metrics', + 'code': 'another_test_code', + 'message': 'This is another message.'} + self.add_log(study_id, workflow.id, task.name, 'empty_workflow', log_data) + log_data = {'level': 'metrics', + 'code': 'a_third_test_code', + 'message': 'This is a third message.'} + self.add_log(study_id, workflow.id, task.name, 'empty_workflow', log_data) - print('test_download_logs_for_study') + rv = self.app.get(f'/v1.0/study/{study_id}/log/download', + content_type="application/json", + headers=self.logged_in_headers()) + + wb = load_workbook(BytesIO(rv.data)) + ws = wb.active + + self.assertEqual(4, ws.max_row) + self.assertEqual('Category', ws['A1'].value) + self.assertEqual('empty_workflow', ws['B2'].value) + self.assertEqual('metrics', ws['C3'].value) + self.assertEqual('a_third_test_code', ws['D4'].value)