def test__upload__upload_MultiFileField(client, faker, n, loggedin_user, mock_email): s, f = faker.get_test_field_of_type(FieldType.get_multifile()) field_data = { f.field_name: [], } files = [] for _ in range(n): fake_file = faker.fake_file() field_data[f.field_name].append(fake_file.file_tuple()) files.append({ 'field': f, 'file': fake_file, }) expected = faker.task_details(service=s) resp = _create_task_post(client, expected, field_data) assert_emails_sent(mock_email, context='created', user=loggedin_user) assert__redirect(resp, endpoint='ui.index') assert__task(expected, loggedin_user, files=files)
def test__label_print__requires_id_entry(client, faker): user = login(client, faker) faker.add_all_studies(user) pack = LabelPack.query.filter_by(type='GoDcmPack').one() resp = client.get( _url( referrer='study', study_id=pack.study_id, pack_name=pack.type, count=1, )) assert__redirect( resp, 'ui.label_print_definition', referrer='study', study_id=pack.study_id, pack_name=pack.type, count=1, ) assert PseudoRandomId.query.join(PseudoRandomIdProvider).filter_by( prefix=GO_DCM_ID_TYPE_PARTICIPANT).count() == 0
def test__upload__upload_FileField(client, faker, required, allowed_file_extensions, file_sent, extension, should_be_loaded): user = login(client, faker) study = faker.get_test_study(collaborator=user) field = faker.get_test_field(field_group=study.field_group, field_type=FieldType.get_file(), allowed_file_extensions=allowed_file_extensions, required=required) content = faker.text() filename = faker.file_name(extension=extension) resp = _do_upload( client, faker, study.id, field_name=field.field_name, field_value=( BytesIO(content.encode('utf-8')), filename ), ) if should_be_loaded: assert__redirect(resp, endpoint='ui.index') _assert_uploaded_file(study, field, filename=filename, content=content) else: assert resp.status_code == status.HTTP_200_OK assert__error__message(resp.soup, field.field_name) _assert_upload_not_saved(study)
def test__update_task__upload_MultiFileField__no_file(client, faker, loggedin_user, mock_email): s, f = faker.get_test_field_of_type(FieldType.get_multifile()) files = [] task = faker.get_test_task(service=s, requestor=loggedin_user) orig1 = faker.fake_file() faker.get_test_task_file(task=task, field=f, fake_file=orig1, filename=orig1.filename) files.append({'field': f, 'file': orig1}) orig2 = faker.fake_file() faker.get_test_task_file(task=task, field=f, fake_file=orig1, filename=orig1.filename) files.append({'field': f, 'file': orig1}) resp = _edit_task_post(client, task) assert_emails_sent(mock_email, context='updated', user=loggedin_user) assert__redirect(resp, endpoint='ui.index') assert__task(task, loggedin_user, files=files)
def test__create_task__with_all_values(client, faker, loggedin_user, mock_email): expected = faker.task_details(service=faker.get_test_service()) resp = _create_task_post(client, expected) assert_emails_sent(mock_email, context='created', user=loggedin_user) assert__redirect(resp, endpoint='ui.index') assert__task(expected, loggedin_user)
def test__dynamic_form__rendering__no_error(client, faker): user = login(client, faker) fg = faker.get_test_field_group(name='Hello') ft = FieldType.get_string() f = faker.get_test_field(field_group=fg, field_type=ft) resp = client.post(url_for('form', field_group_id=fg.id)) assert__redirect(resp, 'ui.index')
def test__update_task__with_all_values(client, faker, loggedin_user, mock_email): task = faker.get_test_task(requestor=loggedin_user) resp = _edit_task_post(client, task) assert_emails_sent(mock_email, context='updated', user=loggedin_user) assert__redirect(resp, endpoint='ui.index') assert__task(task, loggedin_user)
def test__upload__upload_MultiFileField__no_file(client, faker, loggedin_user, mock_email): s, f = faker.get_test_field_of_type(FieldType.get_multifile()) expected = faker.task_details(service=s) resp = _create_task_post(client, expected) assert_emails_sent(mock_email, context='created', user=loggedin_user) assert__redirect(resp, endpoint='ui.index') assert__task(expected, loggedin_user)
def test__create_task__empty_requestor__uses_current_user( client, faker, loggedin_user, mock_email): expected = faker.task_details(service=faker.get_test_service()) expected.requestor_id = None resp = _create_task_post(client, expected) assert_emails_sent(mock_email, context='created', user=loggedin_user) assert__redirect(resp, endpoint='ui.index') expected.requestor_id = loggedin_user.id assert__task(expected, loggedin_user)
def test__upload__upload_study_number__duplicate_allowed(client, faker): user = login(client, faker) study = faker.get_test_study(collaborator=user, allow_duplicate_study_number=True) upload = faker.get_test_upload(study=study) resp = _do_upload(client, faker, upload.study.id, study_number=upload.study_number) assert__redirect(resp, endpoint='ui.index') assert Upload.query.filter( Upload.study_number == upload.study_number ).count() == 2
def test__upload__upload_study_number(client, faker): user = login(client, faker) study = faker.get_test_study(collaborator=user) study_number = faker.pystr(min_chars=5, max_chars=10) resp = _do_upload(client, faker, study.id, study_number=study_number) assert__redirect(resp, endpoint='ui.index') assert Upload.query.filter( Upload.study_number == study_number and Upload.study_id == study.id ).first()
def _do_upload_field(client, faker, study, should_be_loaded, field, value): resp = _do_upload(client, faker, study.id, field_name=field.field_name, field_value=value) if should_be_loaded: assert__redirect(resp, endpoint='ui.index') _assert_uploaded(study, field, value=value) else: assert resp.status_code == status.HTTP_200_OK assert__error__message(resp.soup, field.field_name) _assert_upload_not_saved(study)
def test__upload__upload_study_number__duplicate_on_other_study(client, faker): user = login(client, faker) study2 = faker.get_test_study(collaborator=user) study1 = faker.get_test_study(collaborator=user) upload = faker.get_test_upload(study=study1) resp = _do_upload(client, faker, study2.id, study_number=upload.study_number) assert__redirect(resp, endpoint='ui.index') assert Upload.query.filter( Upload.study_number == upload.study_number and Upload.study_id == study2.id ).first()
def test__upload__upload_study_number__matches_format(client, faker): user = login(client, faker) study = faker.get_test_study(collaborator=user, study_number_format='Tst\\d{8}[A-Z]') study_number = "Tst12345678X" resp = _do_upload(client, faker, study.id, study_number=study_number) assert__redirect(resp, endpoint='ui.index') assert Upload.query.filter( Upload.study_number == study_number and Upload.study_id == study.id ).first()
def test__upload__complete(client, faker): user = login(client, faker) study = faker.get_test_study(owner=user) upload = faker.get_test_upload(study=study) resp = client.post( _url(upload_id=upload.id), data={"id": upload.id}, headers={'Referer': faker.test_referrer()}, ) assert__redirect(resp, url=faker.test_referrer()) changed_upload = Upload.query.get(upload.id) assert changed_upload.completed
def test__update_post__ok(client, faker, loggedin_user): todo = faker.get_test_owned_todo(loggedin_user) expected = faker.pystr(min_chars=5, max_chars=100) resp = _update_todo_post(client, task_id=todo.task.id, todo_id=todo.id, description=expected) assert__redirect(resp, endpoint='ui.task_todo_list', task_id=todo.task.id) ToDo.query.count() == 1 actual = ToDo.query.one() assert actual.id == todo.id assert actual.description == expected assert actual.status == ToDo.get_status_code_from_name(ToDo.OUTSTANDING)
def test__upload__upload_BooleanField(client, faker, required, value, should_be_loaded, saved_value): user = login(client, faker) study = faker.get_test_study(collaborator=user) field = faker.get_test_field(field_group=study.field_group, field_type=FieldType.get_boolean(), required=required) resp = _do_upload(client, faker, study.id, field_name=field.field_name, field_value=value) if should_be_loaded: assert__redirect(resp, endpoint='ui.index') _assert_uploaded(study, field, value=saved_value) else: assert resp.status_code == status.HTTP_200_OK assert__error__message(resp.soup, field.field_name) _assert_upload_not_saved(study)
def test__label_print__no_id_entry__labels_redirect(client, faker, pack_count): user = login(client, faker) faker.add_all_studies(user) pack = LabelPack.query.filter_by(type='CardiometPack').one() resp = client.get( _url( referrer='labels', study_id=pack.study_id, pack_name=pack.type, count=pack_count, )) assert__redirect(resp, 'ui.labels') assert PseudoRandomId.query.join(PseudoRandomIdProvider).filter_by( prefix=CARDIOMET_ID_TYPE_PARTICIPANT).count() == pack_count
def test__upload__upload_FileField(client, faker, loggedin_user, mock_email): s, f = faker.get_test_field_of_type(FieldType.get_file()) field_data = {} fake_file = faker.fake_file() field_data[f.field_name] = fake_file.file_tuple() files = [{ 'field': f, 'file': fake_file, }] expected = faker.task_details(service=s) resp = _create_task_post(client, expected, field_data) assert_emails_sent(mock_email, context='created', user=loggedin_user) assert__redirect(resp, endpoint='ui.index') assert__task(expected, loggedin_user, files=files)
def test__label_print_definition__post__labels_redirect(client, faker): user = login(client, faker) faker.add_all_studies(user) pack = LabelPack.query.filter_by(type='GoDcmPack').one() data = {'participant_id': 'ABCDEFG'} resp = client.post( _url( referrer='labels', study_id=pack.study_id, pack_name=pack.type, count=1, ), buffered=True, content_type="multipart/form-data", data=data, ) assert__redirect(resp, 'ui.labels')
def test__create_task__radio_fields(client, faker, choices, value, expected_value, loggedin_user, mock_email): s, f = faker.get_test_field_of_type(FieldType.get_radio(), choices=choices) field_data = {} if value is not None: field_data[f.field_name] = value expected = faker.task_details(service=s) resp = _create_task_post(client, expected, field_data) assert_emails_sent(mock_email, context='created', user=loggedin_user) assert__redirect(resp, endpoint='ui.index') assert__task(expected, loggedin_user, data=[ { 'field': f, 'value': expected_value, }, ])
def test__update_task__fields(client, faker, field_type, original_value, value, expected_value, loggedin_user, mock_email): s, f = faker.get_test_field_of_type(FieldType._get_field_type(field_type)) field_data = {} data = [] if value is not None: field_data[f.field_name] = value data.append({ 'field': f, 'value': expected_value, }) task = faker.get_test_task(service=s, requestor=loggedin_user) orig = faker.get_test_task_data(task=task, field=f, value=original_value) resp = _edit_task_post(client, task, field_data) assert_emails_sent(mock_email, context='updated', user=loggedin_user) assert__redirect(resp, endpoint='ui.index') assert__task(task, loggedin_user, data=data)
def test__study_list__coll_1_study_redirects(client, faker): user = login(client, faker) study = faker.get_test_study(collaborator=user) resp = client.get(_url()) assert__redirect(resp, endpoint='ui.study_my_uploads', study_id=study.id)
def test__post__no_login(client): resp = client.post(url_for("post_without_login")) assert__redirect(resp, url='http://localhost/')
def test__study_list__owns_1_study_redirects(client, faker): user = login(client, faker) study = faker.get_test_study(owner=user) resp = client.get(_url()) assert__redirect(resp, endpoint='ui.study', study_id=study.id)