Files
purpur-tyrant/src/test/java/games/dmg/spigottyrant/DefaultCapturedMobCustodyReleaseTest.java
T
dmg 80810b3ba1
Release / release (push) Successful in 2m42s
CI / build (push) Successful in 1m11s
feat(tamer): limit custody to one mob
2026-08-21 21:47:42 -04:00

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
));
}
}