Source code for oneibl.tests.test_oneutils

import unittest
from pathlib import Path
from oneibl.one import ONE

one = ONE(
    base_url="https://test.alyx.internationalbrainlab.org",
    username="test_user",
    password="TapetesBloc18",
)


[docs]class TestUtils(unittest.TestCase):
[docs] def setUp(self): # Init connection to the database self.eids = [ "cf264653-2deb-44cb-aa84-89b82507028a", "4e0b3320-47b7-416e-b842-c34dc9004cf8", "a9d89baf-9905-470c-8565-859ff212c7be", "aaf101c3-2581-450a-8abd-ddb8f557a5ad", ] self.partial_eid_paths = [ Path('FlatIron/mainenlab/Subjects/clns0730/2018-08-24/002'), Path('FlatIron/zadorlab/Subjects/flowers/2018-07-13/001'), Path("FlatIron/mainenlab/Subjects/ZM_1743/2019-06-04/001"), Path("FlatIron/cortexlab/Subjects/KS005/2019-04-04/004"), ] self.det_keys = [ "subject", "start_time", "number", "lab", "project", "url", "task_protocol", "local_path", ] self.full_det_keys = [ "subject", "users", "location", "procedures", "lab", "project", "type", "task_protocol", "number", "start_time", "end_time", "narrative", "parent_session", "n_correct_trials", "n_trials", "url", "extended_qc", "qc", "wateradmin_session_related", "data_dataset_session_related", "json", "probe_insertion", ]
[docs] def test_path_from_eid(self): # Test if eid's produce correct output for e, p in zip(self.eids, self.partial_eid_paths): self.assertTrue(str(p) in str(one.path_from_eid(e))) # Test if list input produces valid list output list_output = one.path_from_eid(self.eids) self.assertTrue(isinstance(list_output, list)) self.assertTrue( all([str(p) in str(o) for p, o in zip(self.partial_eid_paths, list_output)]) )
[docs] def test_eid_from_path(self): # test if paths produce expected eid's paths = self.partial_eid_paths[-2:] paths.append("FlatIron/mainenlab/Subjects/ZM_1743/2019-06-04/001/bla.ble") paths.append( "some/other/root/FlatIron/cortexlab/" "Subjects/KS005/2019-04-04/004/bli/blo.blu" ) eids = self.eids[-2:] eids.append("a9d89baf-9905-470c-8565-859ff212c7be") eids.append("aaf101c3-2581-450a-8abd-ddb8f557a5ad") for p, e in zip(paths, eids): self.assertTrue(e == str(one.eid_from_path(p))) # Test if list input produces correct list output list_output = one.eid_from_path(paths) self.assertTrue(isinstance(list_output, list)) self.assertTrue(all([e == o for e, o in zip(eids, list_output)]))
[docs] def test_get_details(self): # Get one known eid details dics det_from_eid = one.get_details(self.eids[0]) full_det_from_eid = one.get_details(self.eids[0], full=True) # Test if all keys in returned dict are in expected keys # Full dict output self.assertTrue( all([x in full_det_from_eid for x in self.full_det_keys]), "Missing details key" ) # Partial dict output self.assertTrue( all([x in det_from_eid for x in self.det_keys]), "Missing details key" ) # Test local path append to details self.assertTrue(det_from_eid['local_path'] is not None) # Test is known local_path is not None self.assertTrue(one.get_details(self.eids[2])['local_path'] is not None) # Test list input self.assertTrue(len(self.eids) == len(one.get_details(self.eids)))
if __name__ == "__main__": unittest.main(exit=False, verbosity=2)