diff --git a/crc/services/study_service.py b/crc/services/study_service.py index 2b149ff3..7c9d2577 100755 --- a/crc/services/study_service.py +++ b/crc/services/study_service.py @@ -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() diff --git a/tests/test_datastore_api.py b/tests/test_datastore_api.py index 155f52a9..1487119a 100644 --- a/tests/test_datastore_api.py +++ b/tests/test_datastore_api.py @@ -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"""