private static CoreExtension newCoreExtension(Consumer<CoreExtension.Context> loadImplementation) { CoreExtension res = mock(CoreExtension.class); when(res.getName()).thenReturn("name_" + name_counter); name_counter++; doAnswer(invocation -> { CoreExtension.Context context = invocation.getArgument(0); loadImplementation.accept(context); return null; }).when(res).load(any()); return res; }
private List<Object> addDeclaredExtensions(ComponentContainer container, Predicate<Object> extensionFilter, Predicate<Object> additionalSideFilter, CoreExtension coreExtension) { ContextImpl context = new ContextImpl(container, extensionFilter, additionalSideFilter, coreExtension.getName()); coreExtension.load(context); return context.getProviders(); }
@Test public void install_provides_new_Configuration_when_getBootConfiguration_is_called_and_there_is_none_in_container() { CoreExtension coreExtension1 = newCoreExtension(); CoreExtension coreExtension2 = newCoreExtension(); when(coreExtensionRepository.loadedCoreExtensions()).thenReturn(Stream.of(coreExtension1, coreExtension2)); ComponentContainer container = new ComponentContainer(); underTest.install(container, noExtensionFilter(), noAdditionalSideFilter()); verify(coreExtension1).load(contextCaptor.capture()); verify(coreExtension2).load(contextCaptor.capture()); // verify each core extension gets its own configuration assertThat(contextCaptor.getAllValues()) .hasSameElementsAs(ImmutableSet.copyOf(contextCaptor.getAllValues())); }
@Test public void install_calls_load_method_on_all_loaded_CoreExtension() { CoreExtension coreExtension1 = newCoreExtension(); CoreExtension coreExtension2 = newCoreExtension(); CoreExtension coreExtension3 = newCoreExtension(); CoreExtension coreExtension4 = newCoreExtension(); List<CoreExtension> coreExtensions = ImmutableList.of(coreExtension1, coreExtension2, coreExtension3, coreExtension4); InOrder inOrder = Mockito.inOrder(coreExtension1, coreExtension2, coreExtension3, coreExtension4); when(coreExtensionRepository.loadedCoreExtensions()).thenReturn(coreExtensions.stream()); ComponentContainer container = new ComponentContainer(); underTest.install(container, noExtensionFilter(), noAdditionalSideFilter()); inOrder.verify(coreExtension1).load(contextCaptor.capture()); inOrder.verify(coreExtension2).load(contextCaptor.capture()); inOrder.verify(coreExtension3).load(contextCaptor.capture()); inOrder.verify(coreExtension4).load(contextCaptor.capture()); // verify each core extension gets its own Context assertThat(contextCaptor.getAllValues()) .hasSameElementsAs(ImmutableSet.copyOf(contextCaptor.getAllValues())); }
@Test public void install_provides_runtime_from_constructor_in_context() { CoreExtension coreExtension1 = newCoreExtension(); CoreExtension coreExtension2 = newCoreExtension(); when(coreExtensionRepository.loadedCoreExtensions()).thenReturn(Stream.of(coreExtension1, coreExtension2)); ComponentContainer container = new ComponentContainer(); underTest.install(container, noExtensionFilter(), noAdditionalSideFilter()); verify(coreExtension1).load(contextCaptor.capture()); verify(coreExtension2).load(contextCaptor.capture()); assertThat(contextCaptor.getAllValues()) .extracting(CoreExtension.Context::getRuntime) .containsOnly(sonarRuntime); }
@Test public void install_provides_Configuration_from_container_when_getBootConfiguration_is_called() { CoreExtension coreExtension1 = newCoreExtension(); CoreExtension coreExtension2 = newCoreExtension(); when(coreExtensionRepository.loadedCoreExtensions()).thenReturn(Stream.of(coreExtension1, coreExtension2)); Configuration configuration = new MapSettings().asConfig(); ComponentContainer container = new ComponentContainer(); container.add(configuration); underTest.install(container, noExtensionFilter(), noAdditionalSideFilter()); verify(coreExtension1).load(contextCaptor.capture()); verify(coreExtension2).load(contextCaptor.capture()); assertThat(contextCaptor.getAllValues()) .extracting(CoreExtension.Context::getBootConfiguration) .containsOnly(configuration); }
private List<Object> addDeclaredExtensions(ComponentContainer container, Predicate<Object> extensionFilter, Predicate<Object> additionalSideFilter, CoreExtension coreExtension) { ContextImpl context = new ContextImpl(container, extensionFilter, additionalSideFilter, coreExtension.getName()); coreExtension.load(context); return context.getProviders(); }