def test_ComponentManager__setup_components(mocker): config = build_simulation_configuration() manager = ComponentManager() builder = mocker.Mock() builder.components = manager manager.add_components([None, MockComponentA('Eric'), MockComponentB('half', 'a', 'bee')]) with pytest.raises(ComponentConfigError): manager.setup_components(builder, config) manager._components = [] manager.add_components([MockComponentA('Eric'), MockComponentB('half', 'a', 'bee')]) manager.setup_components(builder, config) mock_a, mock_b, mock_b_child1, mock_b_child2, mock_b_child3 = manager._components assert mock_a.builder_used_for_setup is None # class has no setup method assert mock_b.builder_used_for_setup is builder assert mock_b_child1.args == ('half',) assert mock_b_child1.builder_used_for_setup is builder assert mock_b_child2.args == ('a',) assert mock_b_child2.builder_used_for_setup is builder assert mock_b_child3.args == ('bee',) assert mock_b_child3.builder_used_for_setup is builder
def test_ComponentManager_add_components(components): config = build_simulation_configuration() cm = ComponentManager() cm.configuration = config cm.add_managers(components) assert cm._managers == OrderedComponentSet(*ComponentManager._flatten(components)) config = build_simulation_configuration() cm = ComponentManager() cm.configuration = config cm.add_components(components) assert cm._components == OrderedComponentSet(*ComponentManager._flatten(components))
def test_ComponentManager_add_components_unnamed(components): config = build_simulation_configuration() cm = ComponentManager() cm.configuration = config with pytest.raises(ComponentConfigError, match='no name'): cm.add_managers(components) config = build_simulation_configuration() cm = ComponentManager() cm.configuration = config with pytest.raises(ComponentConfigError, match='no name'): cm.add_components(components)
def test_add_components(): config = build_simulation_configuration() cm = ComponentManager() cm.configuration = config assert not cm._managers managers = [MockGenericComponent(f'manager_{i}') for i in range(5)] components = [MockGenericComponent(f'component_{i}') for i in range(5)] cm.add_managers(managers) cm.add_components(components) assert cm._managers == OrderedComponentSet(*managers) assert cm._components == OrderedComponentSet(*components) for c in managers + components: assert config[c.name].to_dict() == c.configuration_defaults[c.name] assert cm.list_components() == {c.name: c for c in components}