def test_storage_iter_pointers(): class PointedIterModel(models.Model): id = structures.Field() class PointingIterModel(models.Model): id = models.Field() pointing_field = structures.IterPointerField(type=PointedIterModel) storage = ModelStorage(InMemoryModelDriver(), models=[PointingIterModel]) storage.setup() assert storage.pointed_iter_model assert storage.pointing_iter_model pointed_iter_model1 = PointedIterModel(id='pointed_id1') pointed_iter_model2 = PointedIterModel(id='pointed_id2') pointing_iter_model = PointingIterModel( id='pointing_id', pointing_field=[pointed_iter_model1, pointed_iter_model2]) storage.pointing_iter_model.store(pointing_iter_model) assert storage.pointed_iter_model.get('pointed_id1') == pointed_iter_model1 assert storage.pointed_iter_model.get('pointed_id2') == pointed_iter_model2 assert storage.pointing_iter_model.get('pointing_id') == pointing_iter_model storage.pointing_iter_model.delete('pointing_id') with pytest.raises(StorageError): assert storage.pointed_iter_model.get('pointed_id1') assert storage.pointed_iter_model.get('pointed_id2') assert storage.pointing_iter_model.get('pointing_id')
def test_storage_pointers(): class PointedModel(Model): id = Field() class PointingModel(Model): id = Field() pointing_field = PointerField(type=PointedModel) storage = ModelStorage(InMemoryModelDriver(), models=[PointingModel]) storage.setup() assert storage.pointed_model assert storage.pointing_model pointed_model = PointedModel(id='pointed_id') pointing_model = PointingModel(id='pointing_id', pointing_field=pointed_model) storage.pointing_model.store(pointing_model) assert storage.pointed_model.get('pointed_id') == pointed_model assert storage.pointing_model.get('pointing_id') == pointing_model storage.pointing_model.delete('pointing_id') with pytest.raises(StorageError): assert storage.pointed_model.get('pointed_id') assert storage.pointing_model.get('pointing_id')
def test_storage_driver(): storage = ModelStorage(InMemoryModelDriver()) storage.register(models.ProviderContext) storage.setup() pc = models.ProviderContext(context={}, name='context_name', id='id2') storage.driver.store(name='provider_context', entry=pc.fields_dict, entry_id=pc.id) assert storage.driver.get( name='provider_context', entry_id='id2', model_cls=models.ProviderContext) == pc.fields_dict assert [i for i in storage.driver.iter(name='provider_context')] == [pc.fields_dict] assert [i for i in storage.provider_context] == [pc] storage.provider_context.delete('id2') with pytest.raises(StorageError): storage.provider_context.get('id2')
def test_model_storage(): storage = ModelStorage(InMemoryModelDriver()) storage.register(models.ProviderContext) storage.setup() pc = models.ProviderContext(context={}, name='context_name', id='id1') storage.provider_context.store(pc) assert storage.provider_context.get('id1') == pc assert [pc_from_storage for pc_from_storage in storage.provider_context.iter()] == [pc] assert [pc_from_storage for pc_from_storage in storage.provider_context] == [pc] storage.provider_context.update('id1', context={'update_key': 0}) assert storage.provider_context.get('id1').context == {'update_key': 0} storage.provider_context.delete('id1') with pytest.raises(StorageError): storage.provider_context.get('id1')