Source code for cfme.modeling.tests.test_collections

import attr

from cfme.modeling.base import (
    BaseCollection, BaseEntity,
    EntityCollections,
    parent_of_type,
    load_appliance_collections,
)
from cfme.utils.appliance import DummyAppliance
import pytest


@attr.s
[docs]class MyEntity(BaseEntity): name = attr.ib()
@attr.s
[docs]class MyCollection(BaseCollection): ENTITY = MyEntity
@attr.s
[docs]class MyNewEntity(BaseEntity): name = attr.ib() _collections = {'entities': MyCollection}
@attr.s
[docs]class MyEntityWithDeclared(BaseEntity): collections = EntityCollections.declared( entities=MyCollection, )
@attr.s
[docs]class MyNewCollection(BaseCollection): ENTITY = MyNewEntity
@pytest.fixture
[docs]def dummy_appliance(): return DummyAppliance()
[docs]def test_appliance_collections_dir(dummy_appliance): base_level_collections = set(load_appliance_collections()) assert base_level_collections.issubset(dir(dummy_appliance.collections))
[docs]def test_appliance_collection(dummy_appliance): obj = dummy_appliance.collections.datastores assert obj.parent == dummy_appliance
[docs]def test_appliance_collections_instantiate(dummy_appliance): obj = dummy_appliance.collections.datastores.instantiate('doop', 'dedoop') assert obj assert obj.parent == dummy_appliance.collections.datastores assert obj.appliance == dummy_appliance
[docs]def test_appliance_collection_object_filter(dummy_appliance): filtered_obj = dummy_appliance.collections.datastores.filter({'filtera': 'filterb'}) assert filtered_obj.parent == dummy_appliance assert filtered_obj.filters['filtera'] == 'filterb'
[docs]def test_appliance_collection_chain_filter(dummy_appliance): filtered_obj = dummy_appliance.collections.datastores.filter({'filtera': 'filterb'}) nested_filtered_obj = filtered_obj.filter({'filterc': 'filterd'}) assert filtered_obj.parent == dummy_appliance assert nested_filtered_obj.filters['filtera'] == 'filterb' assert nested_filtered_obj.filters['filtera'] == 'filterb'
[docs]def test_object_collections(dummy_appliance): obj = MyNewCollection(dummy_appliance).instantiate('name') assert obj.collections.entities
[docs]def test_object_collections_parent_filter(dummy_appliance): obj = MyNewCollection(dummy_appliance).instantiate('name') assert obj.collections.entities.filters['parent'] == obj
[docs]def test_parent_relationship(dummy_appliance): obj = MyNewCollection(dummy_appliance).instantiate('name') new_obj = obj.collections.entities.instantiate('boop') assert new_obj.parent.parent.parent.parent == dummy_appliance
[docs]def test_parent_walker(dummy_appliance): obj = MyNewCollection(dummy_appliance).instantiate('name') new_obj = obj.collections.entities.instantiate('boop') assert parent_of_type(new_obj, MyNewEntity) == obj assert parent_of_type(new_obj, DummyAppliance) == dummy_appliance
[docs]def test_declared_entity_collections(dummy_appliance): obj = MyEntityWithDeclared(dummy_appliance) new_obj = obj.collections.entities.instantiate('boop') assert parent_of_type(new_obj, MyEntityWithDeclared) is obj assert parent_of_type(new_obj, DummyAppliance) is dummy_appliance