MMKB-5027: do some refactorings + tests
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
package at.ucs.magnolia.updates;
|
||||
|
||||
|
||||
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;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
|
||||
public class IntranetUpdateModuleVersionHandlerTest {
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
@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));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@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 "";
|
||||
}
|
||||
|
||||
@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));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@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
|
||||
|
||||
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()))
|
||||
.thenAnswer(
|
||||
invocation -> {
|
||||
String version = invocation.getArgument(1, String.class);
|
||||
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);
|
||||
}
|
||||
);
|
||||
|
||||
utilities.when(() -> VersionUtil.addVersion(Mockito.any(), Mockito.any(), Mockito.any()))
|
||||
.thenAnswer(
|
||||
invocation -> {
|
||||
String version = invocation.getArgument(1, String.class);
|
||||
return appliedUpdates.add(version);
|
||||
}
|
||||
);
|
||||
String testVersion = "123456";
|
||||
assertThat(VersionUtil.containsVersion(null, testVersion), equalTo(false));
|
||||
VersionUtil.addVersion(null, testVersion, null);
|
||||
assertThat(VersionUtil.containsVersion(null, testVersion), equalTo(true));
|
||||
// cleanup versions
|
||||
appliedUpdates.clear();
|
||||
}
|
||||
|
||||
}
|
||||
10
src/test/java/at/ucs/magnolia/updates/TestTask.java
Normal file
10
src/test/java/at/ucs/magnolia/updates/TestTask.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package at.ucs.magnolia.updates;
|
||||
|
||||
import at.ucs.magnolia.updates.util.LoggingTask;
|
||||
|
||||
public class TestTask extends LoggingTask {
|
||||
|
||||
public TestTask(String taskName, String taskDescription) {
|
||||
super(taskName, taskDescription);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package at.ucs.magnolia.updates.test.updates1;
|
||||
|
||||
import at.ucs.magnolia.updates.ModuleUpdate;
|
||||
import at.ucs.magnolia.updates.TestTask;
|
||||
import info.magnolia.module.delta.Task;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class V20241125113012_TestUpdate1 extends ModuleUpdate {
|
||||
|
||||
@Override
|
||||
public List<Task> getUpdateTasks() {
|
||||
return List.of(new TestTask("test1","V20241125113012_TestUpdate1"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package at.ucs.magnolia.updates.util;
|
||||
|
||||
|
||||
import at.ucs.magnolia.updates.test.updates1.V20241125113012_TestUpdate1;
|
||||
import org.junit.Test;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
|
||||
public class VersionNumberUtilTest {
|
||||
|
||||
@Test
|
||||
public void testGetVersion() {
|
||||
|
||||
String version = VersionNumberUtil.getVersion(new V20241125113012_TestUpdate1());
|
||||
assertThat("version must match",version,equalTo("20241125113012"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user