@Test public void test_add_collection() { ComponentContainer container = new ComponentContainer(); container.add(Arrays.asList(ComponentWithProperty.class, SimpleComponent.class)); assertThat(container.getComponentByType(ComponentWithProperty.class)).isNotNull(); assertThat(container.getComponentByType(SimpleComponent.class)).isNotNull(); }
@Test public void shouldDeclareExtensionWithoutAddingIt() { ComponentContainer container = new ComponentContainer(); PluginInfo plugin = mock(PluginInfo.class); container.declareExtension(plugin, ComponentWithProperty.class); PropertyDefinitions propertyDefinitions = container.getComponentByType(PropertyDefinitions.class); assertThat(propertyDefinitions.get("foo")).isNotNull(); assertThat(container.getComponentByType(ComponentWithProperty.class)).isNull(); }
@Test public void should_start_and_stop() { ComponentContainer container = spy(new ComponentContainer()); container.addSingleton(StartableComponent.class); container.startComponents(); assertThat(container.getComponentByType(StartableComponent.class).started).isTrue(); assertThat(container.getComponentByType(StartableComponent.class).stopped).isFalse(); verify(container).doBeforeStart(); verify(container).doAfterStart(); container.stopComponents(); assertThat(container.getComponentByType(StartableComponent.class).stopped).isTrue(); }
@Test public void testChild() { ComponentContainer parent = new ComponentContainer(); parent.startComponents(); ComponentContainer child = parent.createChild(); child.addSingleton(StartableComponent.class); child.startComponents(); assertThat(child.getParent()).isSameAs(parent); assertThat(parent.getChild()).isSameAs(child); assertThat(child.getComponentByType(ComponentContainer.class)).isSameAs(child); assertThat(parent.getComponentByType(ComponentContainer.class)).isSameAs(parent); assertThat(child.getComponentByType(StartableComponent.class)).isNotNull(); assertThat(parent.getComponentByType(StartableComponent.class)).isNull(); parent.stopComponents(); }
@Test public void shouldDeclareComponentProperties() { ComponentContainer container = new ComponentContainer(); container.addSingleton(ComponentWithProperty.class); PropertyDefinitions propertyDefinitions = container.getComponentByType(PropertyDefinitions.class); assertThat(propertyDefinitions.get("foo")).isNotNull(); assertThat(propertyDefinitions.get("foo").defaultValue()).isEqualTo("bar"); }
@Test public void shouldForwardStartAndStopToDescendants() { ComponentContainer grandParent = new ComponentContainer(); ComponentContainer parent = grandParent.createChild(); ComponentContainer child = parent.createChild(); child.addSingleton(StartableComponent.class); grandParent.startComponents(); StartableComponent component = child.getComponentByType(StartableComponent.class); assertTrue(component.started); parent.stopComponents(); assertTrue(component.stopped); }
@Test public void shouldRegisterItself() { ComponentContainer container = new ComponentContainer(); assertThat(container.getComponentByType(ComponentContainer.class)).isSameAs(container); }
@Test public void test_add_adapter() { ComponentContainer container = new ComponentContainer(); container.add(new SimpleComponentProvider()); assertThat(container.getComponentByType(SimpleComponent.class)).isNotNull(); }