def test_config_validates_transfer_log(): config = transfer_log.Config({ 'query': [{'session.label': 'Label'}, {'project.label': 'Project'}], 'join': 'session' }) rows = [{'Label': 'ses-01', 'Project': 'My Project'}] errors = transfer_log.check_config_and_log_match(config, rows) assert not errors
def test_transfer_log_missing_column(): config = transfer_log.Config({ 'query': [{'session.label': 'Label'}, {'project.label': 'Project'}], 'join': 'session' }) rows = [{'Label': 'ses-01'}] errors = transfer_log.check_config_and_log_match(config, rows) assert len(errors) == 1 assert errors[0]['column'] == 'Project' assert errors[0]['error'] == 'Transfer log missing column Project'
def test_config_mappings(): config = transfer_log.Config({ 'query': [{'session.label': 'Label'}, {'project.label': 'Project'}], 'join': 'session', 'mappings': { 'Week 4': ['w04', 'wk4', 'Week_4'] } }) assert config.mappings == { 'w04': 'Week 4', 'wk4': 'Week 4', 'Week_4': 'Week 4' }
def test_transfer_log_invalid_value(): config = transfer_log.Config({ 'query': [ {'session.label': 'Label', 'validate': '^[0-9]+$'}, {'project.label': 'Project'} ], 'join': 'session' }) rows = [{'Label': 'ses-01', 'Project': 'My Project'}] errors = transfer_log.check_config_and_log_match(config, rows) print(errors) assert len(errors) == 1 assert errors[0]['row'] == 2 assert errors[0]['column'] == 'Label'
def test_metadata_row(): config = transfer_log.Config( {'query': [ {'subject.info.ClinicalTrialSiteID': 'SITE'}, {'subject.label': 'SUBJECT'}, {'session.label': 'VISIT'}, {'session.timestamp': 'SCAN DATE', 'timeformat': '%m/%d/%Y'}], 'join': 'session'} ) test_meta_dict = {'SITE': '266099', 'SUBJECT': '1129', 'VISIT': 'screening', 'SCAN DATE': '8/1/2014'} test_meta_row = transfer_log.MetadataRow(config=config, row_dict=test_meta_dict, index=2, case_insensitive=False) expected_match_dict = {'subject.info.ClinicalTrialSiteID': '266099', 'subject.label': '1129', 'session.label': 'screening', 'session.timestamp': '08/01/2014'} assert test_meta_row.match_dict == expected_match_dict
def test_flywheel_row(): config = transfer_log.Config( {'query': [ {'subject.info.ClinicalTrialSiteID': 'SITE'}, {'subject.label': 'SUBJECT'}, {'session.label': 'VISIT'}, {'session.timestamp': 'SCAN DATE', 'timeformat': '%m/%d/%Y'}], 'join': 'session'} ) test_fw_dict = {'subject.info.ClinicalTrialSiteID': '266099', 'subject.label': '1129', 'session.label': 'screening', 'session.timestamp': str(datetime.datetime(2014, 8, 1, tzinfo=datetime.timezone.utc))} test_fw_index = 'test_id' test_fw_row = transfer_log.FlywheelRow(config=config, row_dict=test_fw_dict.copy(), index=test_fw_index, case_insensitive=False) test_fw_dict['session.timestamp'] = '08/01/2014' assert test_fw_row.spreadsheet_index == 'test_id' assert test_fw_row.match_dict == test_fw_dict