MMKB-5027: Code improvements + changes in version structure
This commit is contained in:
@@ -1,15 +1,13 @@
|
||||
package at.ucs.magnolia.updates;
|
||||
|
||||
|
||||
import at.ucs.magnolia.updates.util.IntranetUpdateModuleVersionHandlerContext;
|
||||
import at.ucs.magnolia.updates.util.TaskWrapper;
|
||||
import at.ucs.magnolia.updates.util.VersionUtil;
|
||||
import info.magnolia.module.InstallContext;
|
||||
import info.magnolia.module.delta.Delta;
|
||||
import info.magnolia.module.delta.Task;
|
||||
import info.magnolia.module.model.ModuleDefinition;
|
||||
import info.magnolia.module.model.Version;
|
||||
import org.junit.Test;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import javax.jcr.RepositoryException;
|
||||
@@ -18,133 +16,129 @@ import java.util.List;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
public class IntranetUpdateModuleVersionHandlerTest {
|
||||
|
||||
private final IntranetUpdateModuleVersionHandlerContext context = Mockito.mock(IntranetUpdateModuleVersionHandlerContext.class);
|
||||
|
||||
private static final List<String> appliedUpdates = new ArrayList<>();
|
||||
|
||||
@Test
|
||||
public void testGetDeltas_mustReturnSimpleTask() throws RepositoryException {
|
||||
try (MockedStatic<VersionUtil> utilities = Mockito.mockStatic(VersionUtil.class)) {
|
||||
mockVersionUtil(utilities);
|
||||
InstallContext installContext = Mockito.mock(InstallContext.class);
|
||||
ModuleDefinition moduleDefinition = Mockito.mock(ModuleDefinition.class);
|
||||
Mockito.when(installContext.getCurrentModuleDefinition()).thenReturn(moduleDefinition);
|
||||
Mockito.when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9"));
|
||||
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
|
||||
@Override
|
||||
public List<Task> getInitialUpdateTasks() {
|
||||
return List.of();
|
||||
}
|
||||
mockVersionUtil(context);
|
||||
InstallContext installContext = Mockito.mock(InstallContext.class);
|
||||
ModuleDefinition moduleDefinition = Mockito.mock(ModuleDefinition.class);
|
||||
when(installContext.getCurrentModuleDefinition()).thenReturn(moduleDefinition);
|
||||
when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9"));
|
||||
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
|
||||
@Override
|
||||
public List<Task> getInitialUpdateTasks() {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getYamlUpdateDir() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getYamlUpdateDir() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUpdateTaskPackage() {
|
||||
return "at.ucs.magnolia.updates.test.updates1";
|
||||
}
|
||||
};
|
||||
List<Delta> deltas = new IntranetUpdateModuleVersionHandler(config).getDeltas(installContext, installContext.getCurrentModuleDefinition().getVersion());
|
||||
assertThat(deltas.size(), equalTo(1));
|
||||
// the TestTask contained by the class V20241125113012_TestUpdate1 should be returned
|
||||
List<Task> matching = deltas.stream().flatMap(delta -> delta.getTasks().stream()).filter( task -> (task instanceof TaskWrapper && ((TaskWrapper)task).getTask() instanceof TestTask) || (task instanceof TestTask)).toList();
|
||||
assertThat("count of testtask must be 1", matching.size(), equalTo(1));
|
||||
|
||||
}
|
||||
@Override
|
||||
public String getUpdateTaskPackage() {
|
||||
return "at.ucs.magnolia.updates.test.updates1";
|
||||
}
|
||||
};
|
||||
List<Delta> deltas = new TestIntranetUpdateModuleVersionHandler(config, context).getDeltas(installContext, installContext.getCurrentModuleDefinition().getVersion());
|
||||
assertThat(deltas.size(), equalTo(1));
|
||||
// the TestTask contained by the class V20241125113012_TestUpdate1 should be returned
|
||||
List<Task> matching = deltas.stream().flatMap(delta -> delta.getTasks().stream()).filter( task -> (task instanceof TaskWrapper && ((TaskWrapper)task).getTask() instanceof TestTask) || (task instanceof TestTask)).toList();
|
||||
assertThat("count of testtask must be 1", matching.size(), equalTo(1));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testGetDeltas_mustReturnAlsoInstallTasks() throws RepositoryException {
|
||||
try (MockedStatic<VersionUtil> utilities = Mockito.mockStatic(VersionUtil.class)) {
|
||||
mockVersionUtil(utilities);
|
||||
InstallContext installContext = Mockito.mock(InstallContext.class);
|
||||
ModuleDefinition moduleDefinition = Mockito.mock(ModuleDefinition.class);
|
||||
Mockito.when(installContext.getCurrentModuleDefinition()).thenReturn(moduleDefinition);
|
||||
Mockito.when(moduleDefinition.getVersion()).thenReturn(null);
|
||||
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
|
||||
@Override
|
||||
public List<Task> getInitialUpdateTasks() {
|
||||
return List.of(new TestTask("install1","install1desc"));
|
||||
}
|
||||
@Override
|
||||
public String getYamlUpdateDir() {
|
||||
return "";
|
||||
}
|
||||
mockVersionUtil(context);
|
||||
InstallContext installContext = Mockito.mock(InstallContext.class);
|
||||
ModuleDefinition moduleDefinition = Mockito.mock(ModuleDefinition.class);
|
||||
when(installContext.getCurrentModuleDefinition()).thenReturn(moduleDefinition);
|
||||
when(moduleDefinition.getVersion()).thenReturn(null);
|
||||
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
|
||||
@Override
|
||||
public List<Task> getInitialUpdateTasks() {
|
||||
return List.of(new TestTask("install1","install1desc"));
|
||||
}
|
||||
@Override
|
||||
public String getYamlUpdateDir() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUpdateTaskPackage() {
|
||||
return "at.ucs.magnolia.updates.test.updates1";
|
||||
}
|
||||
};
|
||||
List<Delta> deltas = new IntranetUpdateModuleVersionHandler(config).getDeltas(installContext, installContext.getCurrentModuleDefinition().getVersion());
|
||||
assertThat(deltas.size(), equalTo(2));
|
||||
// the TestTask contained by the class V20241125113012_TestUpdate1 must be returned
|
||||
// The TestTask returned by the IntranetUpdateModuleConfig#getInitialUpdateTasks must be contained
|
||||
List<Task> matching = deltas.stream().flatMap(delta -> delta.getTasks().stream()).filter( task -> (task instanceof TaskWrapper && ((TaskWrapper)task).getTask() instanceof TestTask) || (task instanceof TestTask)).toList();
|
||||
assertThat("count of testtask must be 2", matching.size(), equalTo(2));
|
||||
|
||||
}
|
||||
@Override
|
||||
public String getUpdateTaskPackage() {
|
||||
return "at.ucs.magnolia.updates.test.updates1";
|
||||
}
|
||||
};
|
||||
List<Delta> deltas = new TestIntranetUpdateModuleVersionHandler(config, context).getDeltas(installContext, installContext.getCurrentModuleDefinition().getVersion());
|
||||
assertThat(deltas.size(), equalTo(2));
|
||||
// the TestTask contained by the class V20241125113012_TestUpdate1 must be returned
|
||||
// The TestTask returned by the IntranetUpdateModuleConfig#getInitialUpdateTasks must be contained
|
||||
List<Task> matching = deltas.stream().flatMap(delta -> delta.getTasks().stream()).filter( task -> (task instanceof TaskWrapper && ((TaskWrapper)task).getTask() instanceof TestTask) || (task instanceof TestTask)).toList();
|
||||
assertThat("count of testtask must be 2", matching.size(), equalTo(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDeltas_mustNotReturnInstallTasks() throws RepositoryException {
|
||||
try (MockedStatic<VersionUtil> utilities = Mockito.mockStatic(VersionUtil.class)) {
|
||||
mockVersionUtil(utilities);
|
||||
InstallContext installContext = Mockito.mock(InstallContext.class);
|
||||
ModuleDefinition moduleDefinition = Mockito.mock(ModuleDefinition.class);
|
||||
Mockito.when(installContext.getCurrentModuleDefinition()).thenReturn(moduleDefinition);
|
||||
Mockito.when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9"));
|
||||
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
|
||||
@Override
|
||||
public List<Task> getInitialUpdateTasks() {
|
||||
return List.of(new TestTask("install1","install1desc"));
|
||||
}
|
||||
@Override
|
||||
public String getYamlUpdateDir() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getUpdateTaskPackage() {
|
||||
return "at.ucs.magnolia.updates.test.updates1";
|
||||
}
|
||||
};
|
||||
List<Delta> deltas = new IntranetUpdateModuleVersionHandler(config).getDeltas(installContext, installContext.getCurrentModuleDefinition().getVersion());
|
||||
assertThat(deltas.size(), equalTo(1));
|
||||
// the TestTask contained by the class V20241125113012_TestUpdate1 should be returned
|
||||
// The TestTask returned by the IntranetUpdateModuleConfig#getInitialUpdateTasks must not be contained
|
||||
mockVersionUtil(context);
|
||||
InstallContext installContext = Mockito.mock(InstallContext.class);
|
||||
ModuleDefinition moduleDefinition = Mockito.mock(ModuleDefinition.class);
|
||||
when(installContext.getCurrentModuleDefinition()).thenReturn(moduleDefinition);
|
||||
when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9"));
|
||||
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
|
||||
@Override
|
||||
public List<Task> getInitialUpdateTasks() {
|
||||
return List.of(new TestTask("install1","install1desc"));
|
||||
}
|
||||
@Override
|
||||
public String getYamlUpdateDir() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getUpdateTaskPackage() {
|
||||
return "at.ucs.magnolia.updates.test.updates1";
|
||||
}
|
||||
};
|
||||
List<Delta> deltas = new TestIntranetUpdateModuleVersionHandler(config, context).getDeltas(installContext, installContext.getCurrentModuleDefinition().getVersion());
|
||||
assertThat(deltas.size(), equalTo(1));
|
||||
// the TestTask contained by the class V20241125113012_TestUpdate1 should be returned
|
||||
// The TestTask returned by the IntranetUpdateModuleConfig#getInitialUpdateTasks must not be contained
|
||||
|
||||
List<Task> matching = deltas.stream().flatMap(delta -> delta.getTasks().stream()).filter( task -> (task instanceof TaskWrapper && ((TaskWrapper)task).getTask() instanceof TestTask) || (task instanceof TestTask)).toList();
|
||||
assertThat("count of testtask must be 1", matching.size(), equalTo(1));
|
||||
|
||||
|
||||
}
|
||||
List<Task> matching = deltas.stream().flatMap(delta -> delta.getTasks().stream()).filter( task -> (task instanceof TaskWrapper && ((TaskWrapper)task).getTask() instanceof TestTask) || (task instanceof TestTask)).toList();
|
||||
assertThat("count of testtask must be 1", matching.size(), equalTo(1));
|
||||
}
|
||||
|
||||
private void mockVersionUtil(MockedStatic<VersionUtil> utilities) throws RepositoryException {
|
||||
utilities.when(() -> VersionUtil.containsVersion(Mockito.any(), Mockito.any()))
|
||||
private void mockVersionUtil(IntranetUpdateModuleVersionHandlerContext contextMock) throws RepositoryException {
|
||||
doNothing().when(contextMock).initFromJCR(Mockito.any());
|
||||
when(contextMock.alreadyApplied(Mockito.any()))
|
||||
.thenAnswer(
|
||||
invocation -> {
|
||||
String version = invocation.getArgument(1, String.class);
|
||||
String version = invocation.getArgument(0, TaskWrapper.class).getVersion();
|
||||
return appliedUpdates.contains(version);
|
||||
}
|
||||
);
|
||||
|
||||
utilities.when(() -> VersionUtil.addVersion(Mockito.any(), Mockito.any(), Mockito.any()))
|
||||
.thenAnswer(
|
||||
invocation -> {
|
||||
String version = invocation.getArgument(1, String.class);
|
||||
return appliedUpdates.add(version);
|
||||
}
|
||||
);
|
||||
doAnswer(
|
||||
invocation -> {
|
||||
String version = invocation.getArgument(1, TaskWrapper.class).getVersion();
|
||||
appliedUpdates.add(version);
|
||||
return null;
|
||||
}
|
||||
).when(contextMock).registerTask(Mockito.any(), Mockito.any());
|
||||
|
||||
String testVersion = "123456";
|
||||
assertThat(VersionUtil.containsVersion(null, testVersion), equalTo(false));
|
||||
VersionUtil.addVersion(null, testVersion, null);
|
||||
assertThat(VersionUtil.containsVersion(null, testVersion), equalTo(true));
|
||||
assertFalse(contextMock.alreadyApplied(new TaskWrapper(new TestTask("does not matter", "does not matter"), null, testVersion, null)));
|
||||
contextMock.registerTask(null, new TaskWrapper(new TestTask("does not matter", "does not matter"), null, testVersion, null));
|
||||
assertTrue(contextMock.alreadyApplied(new TaskWrapper(new TestTask("does not matter", "does not matter"), null, testVersion, null)));
|
||||
// cleanup versions
|
||||
appliedUpdates.clear();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package at.ucs.magnolia.updates;
|
||||
|
||||
import at.ucs.magnolia.updates.util.IntranetUpdateModuleVersionHandlerContext;
|
||||
|
||||
public class TestIntranetUpdateModuleVersionHandler extends IntranetUpdateModuleVersionHandler {
|
||||
public TestIntranetUpdateModuleVersionHandler(IntranetUpdateModuleConfig moduleConfig, IntranetUpdateModuleVersionHandlerContext context) {
|
||||
super(moduleConfig);
|
||||
this.context = context;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user