64 lines
2.6 KiB
Java
64 lines
2.6 KiB
Java
package games.dmg.spigottyrant;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.mockito.Mockito.mock;
|
|
import static org.mockito.Mockito.when;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Optional;
|
|
import java.util.UUID;
|
|
import org.bukkit.entity.Player;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
final class DefaultCapturedMobCustodyReleaseTest {
|
|
@Test
|
|
void legacyExcessReleaseRetainsOneAndAnyFailedExtra() {
|
|
UUID playerId = UUID.fromString("33333333-3333-3333-3333-333333333333");
|
|
CapturedMob retained = mob("COW");
|
|
CapturedMob releasedExtra = mob("SHEEP");
|
|
CapturedMob deferredExtra = mob("PIG");
|
|
PlayerState state = new PlayerState(
|
|
playerId, "Tamer", Optional.empty(), Optional.empty(), TyrantClass.TAMER,
|
|
Optional.empty(), Map.of(), java.util.Set.of(),
|
|
List.of(retained, releasedExtra, deferredExtra)
|
|
);
|
|
CapturedMobSpawner spawner = mock(CapturedMobSpawner.class);
|
|
Player player = mock(Player.class);
|
|
when(spawner.spawn(player, releasedExtra)).thenReturn(true);
|
|
when(spawner.spawn(player, deferredExtra)).thenReturn(false);
|
|
DefaultCapturedMobCustodyRelease service = new DefaultCapturedMobCustodyRelease(spawner);
|
|
|
|
PlayerState result = service.releaseExcess(player, state, 1);
|
|
|
|
assertEquals(List.of(retained, deferredExtra), result.capturedMobs());
|
|
}
|
|
|
|
@Test
|
|
void removesOnlyCustodyThatSpawnedSuccessfully() {
|
|
UUID playerId = UUID.fromString("33333333-3333-3333-3333-333333333333");
|
|
CapturedMob released = mob("COW");
|
|
CapturedMob deferred = mob("SHEEP");
|
|
PlayerState state = new PlayerState(
|
|
playerId, "Former", Optional.empty(), Optional.empty(), TyrantClass.NONE,
|
|
Optional.empty(), Map.of(), java.util.Set.of(), List.of(released, deferred)
|
|
);
|
|
CapturedMobSpawner spawner = mock(CapturedMobSpawner.class);
|
|
Player player = mock(Player.class);
|
|
when(spawner.spawn(player, released)).thenReturn(true);
|
|
when(spawner.spawn(player, deferred)).thenReturn(false);
|
|
DefaultCapturedMobCustodyRelease service = new DefaultCapturedMobCustodyRelease(spawner);
|
|
|
|
PlayerState result = service.releaseAll(player, state);
|
|
|
|
assertEquals(List.of(deferred), result.capturedMobs());
|
|
assertEquals(TyrantClass.NONE, result.tyrantClass());
|
|
}
|
|
|
|
private static CapturedMob mob(String type) {
|
|
return new CapturedMob(type, Map.of(
|
|
"capture-id", UUID.randomUUID().toString(), "snapshot", "snapshot-" + type
|
|
));
|
|
}
|
|
}
|