def test_entity_version(syn, project, schedule_for_cleanup): # Make an Entity and make sure the version is one entity = File(parent=project['id']) entity['path'] = utils.make_bogus_data_file() schedule_for_cleanup(entity['path']) entity = syn.store(entity) syn.set_annotations(Annotations(entity, entity.etag, {'fizzbuzz': 111222})) entity = syn.get(entity) assert entity.versionNumber == 1 # Update the Entity and make sure the version is incremented entity.foo = 998877 entity['name'] = 'foobarbat' entity['description'] = 'This is a test entity...' entity = syn.store(entity, forceVersion=True, versionLabel="Prada remix") assert entity.versionNumber == 2 # Get the older data and verify the random stuff is still there annotations = syn.get_annotations(entity, version=1) assert annotations['fizzbuzz'][0] == 111222 returnEntity = syn.get(entity, version=1) assert returnEntity.versionNumber == 1 assert returnEntity['fizzbuzz'][0] == 111222 assert 'foo' not in returnEntity # Try the newer Entity returnEntity = syn.get(entity) assert returnEntity.versionNumber == 2 assert returnEntity['foo'][0] == 998877 assert returnEntity['name'] == 'foobarbat' assert returnEntity['description'] == 'This is a test entity...' assert returnEntity['versionLabel'] == 'Prada remix' # Try the older Entity again returnEntity = syn.get(entity, version=1) assert returnEntity.versionNumber == 1 assert returnEntity['fizzbuzz'][0] == 111222 assert 'foo' not in returnEntity # Delete version 2 syn.delete(entity, version=2) returnEntity = syn.get(entity) assert returnEntity.versionNumber == 1
def test_get_and_store(): """Test synapse.get and synapse.store in Project, Folder and File""" ## create project project = Project(name=str(uuid.uuid4()), description='A bogus test project') project = syn.store(project) schedule_for_cleanup(project) ## create folder folder = Folder('Bad stuff', parent=project, description='The rejects from the other fauxldurr', pi=3) folder = syn.store(folder) ## get folder folder = syn.get(folder.id) assert folder.name == 'Bad stuff' assert folder.parentId == project.id assert folder.description == 'The rejects from the other fauxldurr' assert folder.pi[0] == 3 ## update folder folder.pi = 3.14159265359 folder.description = 'The rejects from the other folder' syn.store(folder) ## verify that the updates stuck folder = syn.get(folder) assert folder.name == 'Bad stuff' assert folder.parentId == project.id assert folder.description == 'The rejects from the other folder' assert folder.pi[0] == 3.14159265359 ## upload a File path = utils.make_bogus_data_file() schedule_for_cleanup(path) random_data = File(path, parent=folder, description='Random data', foo=9844) random_data = syn.store(random_data) ## make sure file comes back intact random_data_2 = syn.downloadEntity(random_data) assert filecmp.cmp(path, random_data_2.path) assert random_data.foo[0] == 9844 ## update with a new File new_file_path = utils.make_bogus_data_file() schedule_for_cleanup(new_file_path) random_data.path = new_file_path random_data.foo = 1266 random_data = syn.store(random_data) ## should be version 2 assert random_data.versionNumber == 2 ## make sure the updates stuck random_data_2 = syn.get(random_data) assert random_data_2.path is not None assert filecmp.cmp(new_file_path, random_data_2.path) assert random_data_2.foo[0] == 1266 assert random_data_2.versionNumber == 2 ## make sure we can still get the older version of file old_random_data = syn.get(random_data.id, version=1) assert filecmp.cmp(old_random_data.path, path)