Be sure to delete the data store items when you delete a study.

This commit is contained in:
Dan 2022-03-12 13:35:04 -05:00
parent 52b5e1d34a
commit c8e987cd39
2 changed files with 16 additions and 0 deletions

View File

@ -231,6 +231,7 @@ class StudyService(object):
session.query(StudyAssociated).filter_by(study_id=study_id).delete()
session.query(EmailModel).filter_by(study_id=study_id).delete()
session.query(StudyEvent).filter_by(study_id=study_id).delete()
session.query(DataStoreModel).filter_by(study_id=study_id).delete()
for workflow in session.query(WorkflowModel).filter_by(study_id=study_id):
StudyService.delete_workflow(workflow.id)
study = session.query(StudyModel).filter_by(id=study_id).first()

View File

@ -106,6 +106,21 @@ class DataStoreTest(BaseTest):
studyreponse = session.query(DataStoreModel).filter_by(id=oldid).first()
self.assertEqual(studyreponse,None)
def test_delete_study_with_datastore(self):
study = self.create_study()
study_data = DataStoreSchema().dump(self.TEST_STUDY_ITEM)
study_data['study_id'] = study.id
self.assertEqual(0, session.query(DataStoreModel).count())
rv = self.app.post('/v1.0/datastore',
content_type="application/json",
headers=self.logged_in_headers(),
data=json.dumps(study_data))
self.assertEqual(1, session.query(DataStoreModel).count())
rv = self.app.delete('/v1.0/study/%i' % study.id, headers=self.logged_in_headers())
self.assertEqual(0, session.query(DataStoreModel).count())
def test_data_crosstalk(self):
"""Test to make sure that data saved for user or study is not accessible from the other method"""