diff --git a/crc/models/study.py b/crc/models/study.py index 811ab73e..e56ef8d6 100644 --- a/crc/models/study.py +++ b/crc/models/study.py @@ -60,7 +60,6 @@ class StudyModel(db.Model): self.last_updated = pbs.DATE_MODIFIED self.irb_status = IrbStatus.incomplete_in_protocol_builder - self.status = StudyStatus.in_progress class StudyEvent(db.Model): diff --git a/tests/study/test_study_actions_status.py b/tests/study/test_study_actions_status.py new file mode 100644 index 00000000..4e3a4f66 --- /dev/null +++ b/tests/study/test_study_actions_status.py @@ -0,0 +1,62 @@ +from tests.base_test import BaseTest +from crc import session +from crc.models.study import StudyModel, StudyStatus, StudySchema +import json + + +class TestStudyActionsStatus(BaseTest): + + def update_study_status(self, study, study_schema): + self.app.put('/v1.0/study/%i' % study.id, + content_type="application/json", + headers=self.logged_in_headers(), + data=json.dumps(study_schema)) + + # The error happened when the dashboard reloaded, + # in particular, when we got the studies for the user + api_response = self.app.get('/v1.0/study', headers=self.logged_in_headers(), content_type="application/json") + self.assert_success(api_response) + + study_result = session.query(StudyModel).filter(StudyModel.id == study.id).first() + return study_result + + def test_hold_study(self): + self.load_example_data() + + study = session.query(StudyModel).first() + self.assertEqual(study.status, StudyStatus.in_progress) + + study_schema = StudySchema().dump(study) + study_schema['status'] = 'hold' + study_schema['comment'] = 'This is my hold comment' + + study_result = self.update_study_status(study, study_schema) + self.assertEqual(StudyStatus.hold, study_result.status) + + def test_abandon_study(self): + self.load_example_data() + + study = session.query(StudyModel).first() + self.assertEqual(study.status, StudyStatus.in_progress) + + study_schema = StudySchema().dump(study) + study_schema['status'] = 'abandoned' + study_schema['comment'] = 'This is my abandon comment' + + study_result = self.update_study_status(study, study_schema) + self.assertEqual(StudyStatus.abandoned, study_result.status) + + def test_open_enrollment_study(self): + self.load_example_data() + + study = session.query(StudyModel).first() + self.assertEqual(study.status, StudyStatus.in_progress) + + study_schema = StudySchema().dump(study) + study_schema['status'] = 'open_for_enrollment' + study_schema['comment'] = 'This is my open enrollment comment' + study_schema['enrollment_date'] = '2021-01-04T05:00:00.000Z' + + study_result = self.update_study_status(study, study_schema) + self.assertEqual(StudyStatus.open_for_enrollment, study_result.status) +