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])
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')