コード例 #1
0
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')
コード例 #2
0
def storage():
    base_storage = ModelStorage(
        sql_mapi.SQLAlchemyModelAPI,
        initiator=tests_storage.init_inmemory_model_storage)
    base_storage.register(tests_modeling.MockModel)
    yield base_storage
    tests_storage.release_sqlite_storage(base_storage)
コード例 #3
0
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')
コード例 #4
0
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')
コード例 #5
0
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')
コード例 #6
0
def storage():
    base_storage = ModelStorage(sql_mapi.SQLAlchemyModelAPI,
                                api_kwargs=get_sqlite_api_kwargs())
    base_storage.register(MockModel)
    yield base_storage
    release_sqlite_storage(base_storage)
コード例 #7
0
def storage():
    result = ModelStorage(api_cls=sql_mapi.SQLAlchemyModelAPI,
                          api_kwargs=get_sqlite_api_kwargs(),
                          items=(MockModel1, MockModel2, StrictMockModel))
    yield result
    release_sqlite_storage(result)