mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-24 00:09:31 +02:00
[test] improve grip claw's test readability
This commit is contained in:
parent
4f5b4d324d
commit
e329789b86
@ -1,4 +1,5 @@
|
||||
import { BattlerIndex } from "#app/battle";
|
||||
import Pokemon from "#app/field/pokemon";
|
||||
import { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier";
|
||||
import { Abilities } from "#enums/abilities";
|
||||
import { BerryType } from "#enums/berry-type";
|
||||
@ -27,7 +28,7 @@ describe("Items - Grip Claw", () => {
|
||||
|
||||
game.override
|
||||
.battleType("double")
|
||||
.moveset([ Moves.TACKLE, Moves.SPLASH ])
|
||||
.moveset([ Moves.TACKLE, Moves.SPLASH, Moves.ATTRACT ])
|
||||
.startingHeldItems([
|
||||
{ name: "GRIP_CLAW", count: 1 },
|
||||
])
|
||||
@ -46,28 +47,66 @@ describe("Items - Grip Claw", () => {
|
||||
it("should steal items on contact and only from the attack target", async () => {
|
||||
await game.classicMode.startBattle([ Species.FEEBAS, Species.MILOTIC ]);
|
||||
|
||||
const [ player, ] = game.scene.getPlayerField();
|
||||
const gripClaw = player.getHeldItems()[0] as ContactHeldItemTransferChanceModifier;
|
||||
const [ playerPokemon, ] = game.scene.getPlayerField();
|
||||
|
||||
const gripClaw = playerPokemon.getHeldItems()[0] as ContactHeldItemTransferChanceModifier;
|
||||
vi.spyOn(gripClaw, "chance", "get").mockReturnValue(100);
|
||||
|
||||
const enemyPokemon = game.scene.getEnemyField();
|
||||
|
||||
const enemy1HeldItemCounts = enemyPokemon[0].getHeldItems().map((item) => item.getStackCount());
|
||||
const enemy1HeldItemTotal = enemy1HeldItemCounts[0] + enemy1HeldItemCounts[1];
|
||||
const enemy2HeldItemCounts = enemyPokemon[1].getHeldItems().map((item) => item.getStackCount());
|
||||
const enemy2HeldItemTotal = enemy2HeldItemCounts[0] + enemy2HeldItemCounts[1];
|
||||
const playerHeldItemCount = getHeldItemCount(playerPokemon);
|
||||
const enemy1HeldItemCount = getHeldItemCount(enemyPokemon[0]);
|
||||
const enemy2HeldItemCount = getHeldItemCount(enemyPokemon[1]);
|
||||
expect(enemy2HeldItemCount).toBeGreaterThan(0);
|
||||
|
||||
game.move.select(Moves.TACKLE, 0, BattlerIndex.ENEMY_2);
|
||||
game.move.select(Moves.SPLASH, 1);
|
||||
|
||||
await game.phaseInterceptor.to("BerryPhase", false);
|
||||
|
||||
const enemy1HeldItemCountsAfter = enemyPokemon[0].getHeldItems().map((item) => item.getStackCount());
|
||||
const enemy1HeldItemTotalAfter = enemy1HeldItemCountsAfter[0] + enemy1HeldItemCountsAfter[1];
|
||||
const enemy2HeldItemCountsAfter = enemyPokemon[1].getHeldItems().map((item) => item.getStackCount());
|
||||
const enemy2HeldItemTotalAfter = enemy2HeldItemCountsAfter[0] + enemy2HeldItemCountsAfter[1];
|
||||
const playerHeldItemCountAfter = getHeldItemCount(playerPokemon);
|
||||
const enemy1HeldItemCountsAfter = getHeldItemCount(enemyPokemon[0]);
|
||||
const enemy2HeldItemCountsAfter = getHeldItemCount(enemyPokemon[1]);
|
||||
|
||||
expect(enemy1HeldItemTotalAfter).toBe(enemy1HeldItemTotal);
|
||||
expect(enemy2HeldItemTotalAfter).toBe(enemy2HeldItemTotal - 1);
|
||||
expect(playerHeldItemCountAfter).toBe(playerHeldItemCount + 1);
|
||||
expect(enemy1HeldItemCountsAfter).toBe(enemy1HeldItemCount);
|
||||
expect(enemy2HeldItemCountsAfter).toBe(enemy2HeldItemCount - 1);
|
||||
});
|
||||
|
||||
it("should not steal items when using a targetted, non attack move", async () => {
|
||||
await game.classicMode.startBattle([ Species.FEEBAS, Species.MILOTIC ]);
|
||||
|
||||
const [ playerPokemon, ] = game.scene.getPlayerField();
|
||||
|
||||
const gripClaw = playerPokemon.getHeldItems()[0] as ContactHeldItemTransferChanceModifier;
|
||||
vi.spyOn(gripClaw, "chance", "get").mockReturnValue(100);
|
||||
|
||||
const enemyPokemon = game.scene.getEnemyField();
|
||||
|
||||
const playerHeldItemCount = getHeldItemCount(playerPokemon);
|
||||
const enemy1HeldItemCount = getHeldItemCount(enemyPokemon[0]);
|
||||
const enemy2HeldItemCount = getHeldItemCount(enemyPokemon[1]);
|
||||
expect(enemy2HeldItemCount).toBeGreaterThan(0);
|
||||
|
||||
game.move.select(Moves.ATTRACT, 0, BattlerIndex.ENEMY_2);
|
||||
game.move.select(Moves.SPLASH, 1);
|
||||
|
||||
await game.phaseInterceptor.to("BerryPhase", false);
|
||||
|
||||
const playerHeldItemCountAfter = getHeldItemCount(playerPokemon);
|
||||
const enemy1HeldItemCountsAfter = getHeldItemCount(enemyPokemon[0]);
|
||||
const enemy2HeldItemCountsAfter = getHeldItemCount(enemyPokemon[1]);
|
||||
|
||||
expect(playerHeldItemCountAfter).toBe(playerHeldItemCount);
|
||||
expect(enemy1HeldItemCountsAfter).toBe(enemy1HeldItemCount);
|
||||
expect(enemy2HeldItemCountsAfter).toBe(enemy2HeldItemCount);
|
||||
});
|
||||
});
|
||||
|
||||
/*
|
||||
* Gets the total number of items a Pokemon holds
|
||||
*/
|
||||
function getHeldItemCount(pokemon: Pokemon) {
|
||||
return pokemon.getHeldItems().reduce((currentTotal, item) => currentTotal + item.getStackCount(), 0);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user