def test_usecase_3():

    # a)
    med_api = MednickAPI(server_address, '*****@*****.**', 'Pass1234')
    fid_for_manual_upload = med_api.extract_var(
        med_api.get_files(studyid='TEST'), '_id')[0]  # get a random fid
    data_post = {
        'studyid': 'TEST',
        'filetype': 'memtesta',
        'data': {
            'accuracy': 0.9
        },
        'versionid': 1,
        'subjectid': 2,
        'visitid': 1,
        'sessionid': 1
    }
    log = med_api.upload_data(**data_post, fid=fid_for_manual_upload)
    print('testcase3 log:')
    print(log)
    # b)
    time.sleep(5)  # Give db 5 seconds to update
    correct_filename_versions = [
        pytest.usecase_1_filename_version, pytest.usecase_2_filename_version
    ]
    filename_versions = med_api.extract_var(
        med_api.get_files(studyid='TEST', versionid=1), 'filename_version')
    assert all([
        fid in correct_filename_versions for fid in filename_versions
    ]), "Missing expected filename versions from two previous usecases"

    # c)
    time.sleep(5)  # Give db 5 seconds to update
    data_rows = med_api.get_data(studyid='TEST',
                                 versionid=1,
                                 format='flat_dict')
    correct_row_2 = pytest.usecase_2_row2.copy()
    correct_row_2.update({'memtesta.accuracy': 0.9, 'visitid': 1})
    pytest.usecase_3_row2 = correct_row_2
    correct_rows = [pytest.usecase_2_row1, correct_row_2]
    for correct_row in correct_rows:
        assert any(
            [dict_issubset(data_row, correct_row) for data_row in data_rows])
예제 #2
0
                    if data_out is not None:
                        for data in data_out:
                            del data[
                                'filepath']  # we don't want to have dead refs, and fid will fill this role
                            file_specifiers = {
                                k: v
                                for k, v in file_info.items()
                                if k in upload_kwargs
                            }
                            data_keys = list(data.keys())
                            file_specifiers.update({
                                k: data.pop(k)
                                for k in data_keys if k in upload_kwargs
                            })
                            med_api.upload_data(data=data,
                                                fid=file_info['_id'],
                                                **file_specifiers)
                            print('Uploaded a data row for',
                                  file_info['filename'])
                            print(med_api.get_data(**file_specifiers))
                    med_api.update_parsed_status(fid=file_info['_id'],
                                                 status=True)

                except:  # some kind of parsing error on a specific file
                    problem_files.append(file_info['filename'])
                    logging.exception('Problem file: ' + file_info['filename'])

        print(
            '\rCompleted parse. Sleeping for', parse_rate,
            'seconds. Logger has ' + str(len(problem_files)) +
            ' problem files')