/** * Gets the BuildInfo for a given module. The BuildInfoService decides internally whenever the module should be * built prior to construct the BuildInfo. * @param module The module for getting the BuildInfo. * @return the BuildInfo for the given module. */ public BuildInfo getBuildInfo(final Module module) { final Builder[] result = {builderCache.getBuilder(module)}; if (result[0] == null || !result[0].isBuilt()) { ((BuildServiceImpl) buildService).build(module, builder -> result[0] = builder); } return new BuildInfoImpl(result[0]); } }
@Test public void testGetBuildInfoWhenBuilerNotExist() { //the builder don't exists. when(cache.getBuilder(module)).thenReturn(null); testBuildIsRequired(); }
@Test public void testGetBuildInfoWhenModuleIsBuilt() { when(cache.getBuilder(module)).thenReturn(builder); when(builder.isBuilt()).thenReturn(true); BuildInfo expectedBuildInfo = new BuildInfoImpl(builder); BuildInfo result = buildInfoService.getBuildInfo(module); assertEquals(expectedBuildInfo, result); verify(cache, times(1)).getBuilder(module); verify(buildService, never()).build(eq(module), any(Consumer.class)); }
@Test public void testGetBuildInfoWhenModuleIsNotBuilt() { //the builder exists, but was never built. when(cache.getBuilder(module)).thenReturn(builderNotBuilt); when(builderNotBuilt.isBuilt()).thenReturn(false); testBuildIsRequired(); }
private void verifyBuilder(KieModule module, GAV gav) { Builder builder = cache.getBuilder(module); assertNotNull(builder); assertTrue(builder.isBuilt()); verify(m2RepoService, times(1)).deployJar(any(InputStream.class), eq(gav)); }
private void testBuildIsRequired() { doAnswer(new Answer<Void>() { public Void answer(InvocationOnMock invocation) { Consumer consumer = (Consumer) invocation.getArguments()[1]; consumer.accept(builder); return null; } }).when(buildService).build(eq(module), any(Consumer.class)); BuildInfo result = buildInfoService.getBuildInfo(module); BuildInfo expectedBuildInfo = new BuildInfoImpl(builder); assertEquals(expectedBuildInfo, result); verify(cache, times(1)).getBuilder(module); verify(buildService, times(1)).build(eq(module), any(Consumer.class)); } }