From 4e98bcbe89daf8d0ef43a744d4697e744967a2a7 Mon Sep 17 00:00:00 2001 From: innerthunder Date: Sat, 9 Nov 2024 10:35:57 -0800 Subject: [PATCH] Fix flaky unburden tests --- src/test/abilities/unburden.test.ts | 32 +++++++++++++++-------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/test/abilities/unburden.test.ts b/src/test/abilities/unburden.test.ts index 7cd69f4a075..1f95cdbf8c0 100644 --- a/src/test/abilities/unburden.test.ts +++ b/src/test/abilities/unburden.test.ts @@ -5,8 +5,10 @@ import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { Stat } from "#enums/stat"; -import { BerryType } from "#app/enums/berry-type"; +import { BerryType } from "#enums/berry-type"; import { allMoves, StealHeldItemChanceAttr } from "#app/data/move"; +import { ContactHeldItemTransferChanceModifier } from "#app/modifier/modifier"; +import { BattlerIndex } from "#app/battle"; describe("Abilities - Unburden", () => { @@ -29,7 +31,7 @@ describe("Abilities - Unburden", () => { .battleType("single") .starterSpecies(Species.TREECKO) .startingLevel(1) - .moveset([ Moves.POPULATION_BOMB, Moves.KNOCK_OFF, Moves.PLUCK, Moves.THIEF ]) + .moveset([ Moves.TACKLE, Moves.KNOCK_OFF, Moves.PLUCK, Moves.THIEF ]) .startingHeldItems([ { name: "BERRY", count: 1, type: BerryType.SITRUS }, { name: "BERRY", count: 2, type: BerryType.APICOT }, @@ -92,16 +94,15 @@ describe("Abilities - Unburden", () => { it("should activate when an item is stolen via attacking ability", async () => { game.override .ability(Abilities.MAGICIAN) - .startingHeldItems([ - { name: "MULTI_LENS", count: 3 }, - ]); + .startingHeldItems([]); + await game.classicMode.startBattle(); const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyHeldItemCt = enemyPokemon.getHeldItems().length; const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); - game.move.select(Moves.POPULATION_BOMB); + game.move.select(Moves.TACKLE); await game.toNextTurn(); expect(enemyPokemon.getHeldItems().length).toBeLessThan(enemyHeldItemCt); @@ -124,7 +125,7 @@ describe("Abilities - Unburden", () => { const playerHeldItems = playerPokemon.getHeldItems().length; const initialPlayerSpeed = playerPokemon.getStat(Stat.SPD); - game.move.select(Moves.POPULATION_BOMB); + game.move.select(Moves.TACKLE); await game.toNextTurn(); expect(playerPokemon.getHeldItems().length).toBeLessThan(playerHeldItems); @@ -152,10 +153,7 @@ describe("Abilities - Unburden", () => { it("should activate when an item is stolen via grip claw", async () => { game.override .startingLevel(5) - .startingHeldItems([ - { name: "GRIP_CLAW", count: 5 }, - { name: "MULTI_LENS", count: 3 }, - ]) + .startingHeldItems([{ name: "GRIP_CLAW", count: 5 }]) .enemyHeldItems([ { name: "SOUL_DEW", count: 1 }, { name: "LUCKY_EGG", count: 1 }, @@ -167,14 +165,18 @@ describe("Abilities - Unburden", () => { ]); await game.classicMode.startBattle(); + const playerPokemon = game.scene.getPlayerPokemon()!; + const gripClaw = playerPokemon.getHeldItems()[0] as ContactHeldItemTransferChanceModifier; + vi.spyOn(gripClaw, "chance", "get").mockReturnValue(100); + const enemyPokemon = game.scene.getEnemyPokemon()!; const enemyHeldItemCt = enemyPokemon.getHeldItems().length; const initialEnemySpeed = enemyPokemon.getStat(Stat.SPD); - while (enemyPokemon.getHeldItems().length === enemyHeldItemCt) { - game.move.select(Moves.POPULATION_BOMB); - await game.toNextTurn(); - } + game.move.select(Moves.TACKLE); + await game.setTurnOrder([ BattlerIndex.PLAYER, BattlerIndex.ENEMY ]); + + await game.phaseInterceptor.to("MoveEndPhase"); expect(enemyPokemon.getHeldItems().length).toBeLessThan(enemyHeldItemCt); expect(enemyPokemon.getEffectiveStat(Stat.SPD)).toBeCloseTo(initialEnemySpeed * 2);