mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-27 22:40:13 +00:00
Fixed startup lifecycle test
- The levels-ready startup test drives the parallel dimension restore instead of the removed per-dimension restore call
This commit is contained in:
1 parent
b8aa00b70e
commit
03c2630497
3 files changed
+14
-73
No files matched your search
+14
-8
@@ -9,10 +9,13 @@ import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.CALLS_REAL_METHODS;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.mockStatic;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class ModdedStartupLifecycleTest {
|
||||
@@ -22,6 +25,7 @@ public class ModdedStartupLifecycleTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void restoresAfterWorldsLoadWithoutRepeatingDuringServerTicks() {
|
||||
NativeModdedServer server = mock(NativeModdedServer.class);
|
||||
AtomicBoolean worldsRefreshed = new AtomicBoolean();
|
||||
@@ -32,28 +36,30 @@ public class ModdedStartupLifecycleTest {
|
||||
when(server.hasPlayerList()).thenReturn(true);
|
||||
ModdedDimensionRegistryStore.PersistentDimension dimension =
|
||||
new ModdedDimensionRegistryStore.PersistentDimension("iris:moon", "overworld", "overworld", 1337L);
|
||||
ModdedDimensionInjection<Object, Object, Object> restore = mock(ModdedDimensionInjection.class);
|
||||
when(restore.finish()).thenAnswer(invocation -> {
|
||||
assertTrue(worldsRefreshed.get());
|
||||
return List.of();
|
||||
});
|
||||
|
||||
try (MockedStatic<ModdedStartup> startup = mockStatic(ModdedStartup.class, CALLS_REAL_METHODS);
|
||||
MockedStatic<ModdedDimensionRegistryStore> store = mockStatic(ModdedDimensionRegistryStore.class);
|
||||
MockedStatic<ModdedDimensionManager> manager = mockStatic(ModdedDimensionManager.class);
|
||||
MockedStatic<ModdedDimensionInjection> injection = mockStatic(ModdedDimensionInjection.class);
|
||||
MockedStatic<ModdedForcedDatapack> datapack = mockStatic(ModdedForcedDatapack.class);
|
||||
MockedStatic<ModdedMixinAudit> audit = mockStatic(ModdedMixinAudit.class);
|
||||
MockedStatic<ModdedIrisLog> log = mockStatic(ModdedIrisLog.class)) {
|
||||
startup.when(ModdedStartup::prepareForStartup).thenAnswer(invocation -> null);
|
||||
store.when(() -> ModdedDimensionRegistryStore.loadForStartup(server)).thenReturn(List.of(dimension));
|
||||
manager.when(() -> ModdedDimensionManager.restorePersistent(server, "iris:moon", "overworld", "overworld", 1337L))
|
||||
.thenAnswer(invocation -> {
|
||||
assertTrue(worldsRefreshed.get());
|
||||
return null;
|
||||
});
|
||||
injection.when(() -> ModdedDimensionInjection.start(eq(List.of(dimension)), any())).thenReturn(restore);
|
||||
|
||||
ModdedLifecycleCallbacks.create().levelsReady().accept(server);
|
||||
|
||||
manager.verify(() -> ModdedDimensionManager.restorePersistent(server, "iris:moon", "overworld", "overworld", 1337L));
|
||||
verify(restore).finish();
|
||||
ModdedStartup.runOnce(server);
|
||||
ModdedStartup.runOnce(server);
|
||||
store.verify(() -> ModdedDimensionRegistryStore.loadForStartup(server), times(1));
|
||||
manager.verify(() -> ModdedDimensionManager.restorePersistent(server, "iris:moon", "overworld", "overworld", 1337L), times(1));
|
||||
injection.verify(() -> ModdedDimensionInjection.start(any(), any()), times(1));
|
||||
verify(restore, times(1)).finish();
|
||||
datapack.verify(ModdedForcedDatapack::verifyInjected, times(1));
|
||||
audit.verify(ModdedMixinAudit::runOnce, times(1));
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user