use of com.buschmais.jqassistant.core.scanner.spi.ScannerPluginRepository in project jqa-core-framework by buschmais.
the class PluginRepositoryImplTest method getScannerPluginProperties.
private Map<String, Object> getScannerPluginProperties(PluginRepository pluginRepository, Map<String, Object> properties) {
ScannerPluginRepository scannerPluginRepository = pluginRepository.getScannerPluginRepository();
ScannerContext scannerContext = mock(ScannerContext.class);
Map<String, ScannerPlugin<?, ?>> scannerPlugins = scannerPluginRepository.getScannerPlugins(scannerContext, properties);
assertThat(scannerPlugins).isNotEmpty();
for (ScannerPlugin<?, ?> scannerPlugin : scannerPlugins.values()) {
if (scannerPlugin instanceof TestScannerPlugin) {
return ((TestScannerPlugin) scannerPlugin).getProperties();
}
}
return null;
}
use of com.buschmais.jqassistant.core.scanner.spi.ScannerPluginRepository in project jqa-core-framework by buschmais.
the class ScannerPluginRepositoryTest method scopes.
@Test
void scopes() {
PluginConfigurationReader pluginConfigurationReader = new PluginConfigurationReaderImpl();
ScannerPluginRepository repository = new ScannerPluginRepositoryImpl(pluginConfigurationReader);
assertThat(repository.getScope("test:foo"), Matchers.equalTo(TestScope.FOO));
assertThat(repository.getScope("Test:foo"), Matchers.equalTo(TestScope.FOO));
assertThat(repository.getScope("test:Foo"), Matchers.equalTo(TestScope.FOO));
}
use of com.buschmais.jqassistant.core.scanner.spi.ScannerPluginRepository in project jqa-core-framework by buschmais.
the class ScannerImplTest method pluginPipeline.
/**
* Verifies correct execution of the pipeline for dependent and nested scanner
* plugins:
*
* <ul>
* <li>A {@link TestItem} is scanned initially by
* {@link TestItemScannerPlugin}.</li>
* <li>The created {@link TestItemDescriptor} is then passed to the
* {@link DependentTestItemScannerPlugin}.</li>
* <li>The {@link DependentTestItemScannerPlugin} triggers a separate scan using
* the {@link TestScope} which activates the
* {@link NestedTestItemScannerPlugin}.</li>
* </ul>
*/
@Test
void pluginPipeline() {
Store store = mock(Store.class);
ScannerContext scannerContext = new ScannerContextImpl(store, OUTPUT_DIRECTORY);
when(store.create(any(Class.class))).thenAnswer((Answer<Descriptor>) invocation -> {
Class<? extends Descriptor> descriptorType = (Class<? extends Descriptor>) invocation.getArguments()[0];
return mock(descriptorType);
});
when(store.addDescriptorType(any(Descriptor.class), any(Class.class))).thenAnswer((Answer<Descriptor>) invocation -> {
Class<? extends Descriptor> descriptorType = (Class<? extends Descriptor>) invocation.getArguments()[1];
return mock(descriptorType);
});
Map<String, ScannerPlugin<?, ?>> scannerPlugins = new HashMap<>();
scannerPlugins.put("TestScanner", new TestItemScannerPlugin());
scannerPlugins.put("DependentTestScanner", new DependentTestItemScannerPlugin());
scannerPlugins.put("NestedTestScanner", new NestedTestItemScannerPlugin());
doReturn(scannerPlugins).when(scannerPluginRepository).getScannerPlugins(scannerContext, emptyMap());
Scanner scanner = new ScannerImpl(new ScannerConfiguration(), emptyMap(), scannerContext, scannerPluginRepository);
Descriptor descriptor = scanner.scan(new TestItem(), "/", DefaultScope.NONE);
assertThat(descriptor, instanceOf(DependentTestItemDescriptor.class));
verify(store).create(eq(TestItemDescriptor.class));
verify(store).addDescriptorType(any(TestItemDescriptor.class), eq(NestedTestItemDescriptor.class));
verify(store).addDescriptorType(any(NestedTestItemDescriptor.class), eq(DependentTestItemDescriptor.class));
}
Aggregations