From 04734bd9bfa99953f19eb0f15eaab45a80aacd12 Mon Sep 17 00:00:00 2001 From: Bertie690 Date: Sat, 9 Aug 2025 11:18:31 -0400 Subject: [PATCH] Removed bangs from various calls to phase manager --- src/battle-scene.ts | 6 ++-- src/data/arena-tag.ts | 2 +- src/data/battler-tags.ts | 29 ++++++++-------- src/field/pokemon.ts | 4 +-- src/ui/challenges-select-ui-handler.ts | 4 +-- src/ui/egg-hatch-scene-handler.ts | 2 +- src/ui/egg-summary-ui-handler.ts | 2 +- src/ui/menu-ui-handler.ts | 2 +- src/ui/party-ui-handler.ts | 4 +-- src/ui/pokedex-page-ui-handler.ts | 2 +- src/ui/starter-select-ui-handler.ts | 4 +-- test/abilities/disguise.test.ts | 2 +- test/battle/battle.test.ts | 2 +- test/battle/special-battle.test.ts | 18 +++++----- test/moves/transform-imposter.test.ts | 4 +-- .../a-trainers-test-encounter.test.ts | 7 ++-- .../absolute-avarice-encounter.test.ts | 5 ++- .../berries-abound-encounter.test.ts | 13 ++++---- .../bug-type-superfan-encounter.test.ts | 33 +++++++++---------- .../clowning-around-encounter.test.ts | 7 ++-- .../dancing-lessons-encounter.test.ts | 7 ++-- .../encounters/delibirdy-encounter.test.ts | 6 ++-- .../department-store-sale-encounter.test.ts | 8 ++--- .../fiery-fallout-encounter.test.ts | 9 +++-- .../fight-or-flight-encounter.test.ts | 9 +++-- .../fun-and-games-encounter.test.ts | 24 +++++++------- .../global-trade-system-encounter.test.ts | 2 +- .../encounters/lost-at-sea-encounter.test.ts | 4 +-- .../mysterious-challengers-encounter.test.ts | 13 ++++---- .../encounters/part-timer-encounter.test.ts | 2 +- .../encounters/safari-zone.test.ts | 2 +- .../teleporting-hijinks-encounter.test.ts | 11 +++---- .../the-expert-breeder-encounter.test.ts | 13 ++++---- .../the-pokemon-salesman-encounter.test.ts | 2 +- .../the-strong-stuff-encounter.test.ts | 5 ++- .../the-winstrate-challenge-encounter.test.ts | 7 ++-- .../trash-to-treasure-encounter.test.ts | 7 ++-- .../uncommon-breed-encounter.test.ts | 9 +++-- .../encounters/weird-dream-encounter.test.ts | 9 +++-- .../mystery-encounter.test.ts | 2 +- test/phases/mystery-encounter-phase.test.ts | 2 +- test/test-utils/game-manager.ts | 2 +- 42 files changed, 146 insertions(+), 161 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 271cde1aaa9..501933a2c14 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1569,9 +1569,9 @@ export class BattleScene extends SceneBase { return 0; } - const isEggPhase: boolean = ["EggLapsePhase", "EggHatchPhase"].includes( - this.phaseManager.getCurrentPhase()?.phaseName ?? "", - ); + const isEggPhase = + this.phaseManager.getCurrentPhase().is("EggLapsePhase") || + this.phaseManager.getCurrentPhase().is("EggHatchPhase"); if ( // Give trainers with specialty types an appropriately-typed form for Wormadam, Rotom, Arceus, Oricorio, Silvally, or Paldean Tauros. diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 15c2cde1d58..cea275a627b 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -469,7 +469,7 @@ const QuickGuardConditionFunc: ProtectConditionFunc = (_arena, moveId) => { const move = allMoves[moveId]; const effectPhase = globalScene.phaseManager.getCurrentPhase(); - if (effectPhase?.is("MoveEffectPhase")) { + if (effectPhase.is("MoveEffectPhase")) { const attacker = effectPhase.getUserPokemon(); if (attacker) { return move.getPriority(attacker) > 0; diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 1199ac581a6..a9c96b6bf8d 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -227,26 +227,27 @@ interface GenericSerializableBattlerTag extends Serial * Descendants can override {@linkcode isMoveRestricted} to restrict moves that * match a condition. A restricted move gets cancelled before it is used. * Players and enemies should not be allowed to select restricted moves. + * @todo Require descendant subclasses to inherit a `PRE_MOVE` lapse type */ export abstract class MoveRestrictionBattlerTag extends SerializableBattlerTag { public declare readonly tagType: MoveRestrictionBattlerTagType; override lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { - if (lapseType === BattlerTagLapseType.PRE_MOVE) { - // Cancel the affected pokemon's selected move - const phase = globalScene.phaseManager.getCurrentPhase() as MovePhase; - const move = phase.move; - - if (this.isMoveRestricted(move.moveId, pokemon)) { - if (this.interruptedText(pokemon, move.moveId)) { - globalScene.phaseManager.queueMessage(this.interruptedText(pokemon, move.moveId)); - } - phase.cancel(); - } - - return true; + if (lapseType !== BattlerTagLapseType.PRE_MOVE) { + return super.lapse(pokemon, lapseType); } - return super.lapse(pokemon, lapseType); + // Cancel the affected pokemon's selected move + const phase = globalScene.phaseManager.getCurrentPhase() as MovePhase; + const move = phase.move; + + if (this.isMoveRestricted(move.moveId, pokemon)) { + if (this.interruptedText(pokemon, move.moveId)) { + globalScene.phaseManager.queueMessage(this.interruptedText(pokemon, move.moveId)); + } + phase.cancel(); + } + + return true; } /** diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index fe85e92772c..2caa3d1d70c 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1244,7 +1244,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { } // During the Pokemon's MoveEffect phase, the offset is removed to put the Pokemon "in focus" const currentPhase = globalScene.phaseManager.getCurrentPhase(); - return !(currentPhase?.is("MoveEffectPhase") && currentPhase.getPokemon() === this); + return !(currentPhase.is("MoveEffectPhase") && currentPhase.getPokemon() === this); } /** If this Pokemon has a Substitute on the field, removes its sprite from the field. */ @@ -4928,7 +4928,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container { */ if (effect === StatusEffect.SLEEP || effect === StatusEffect.FREEZE) { const currentPhase = globalScene.phaseManager.getCurrentPhase(); - if (currentPhase?.is("MoveEffectPhase") && currentPhase.getUserPokemon() === this) { + if (currentPhase.is("MoveEffectPhase") && currentPhase.getUserPokemon() === this) { this.turnData.hitCount = 1; this.turnData.hitsLeft = 1; } diff --git a/src/ui/challenges-select-ui-handler.ts b/src/ui/challenges-select-ui-handler.ts index b37ddcc6a5f..68559b92439 100644 --- a/src/ui/challenges-select-ui-handler.ts +++ b/src/ui/challenges-select-ui-handler.ts @@ -383,14 +383,14 @@ export class GameChallengesUiHandler extends UiHandler { this.updateChallengeArrows(this.startCursor.visible); } else { globalScene.phaseManager.toTitleScreen(); - globalScene.phaseManager.getCurrentPhase()?.end(); + globalScene.phaseManager.getCurrentPhase().end(); } success = true; } else if (button === Button.SUBMIT || button === Button.ACTION) { if (this.hasSelectedChallenge) { if (this.startCursor.visible) { globalScene.phaseManager.unshiftNew("SelectStarterPhase"); - globalScene.phaseManager.getCurrentPhase()?.end(); + globalScene.phaseManager.getCurrentPhase().end(); } else { this.startCursor.setVisible(true); this.cursorObj?.setVisible(false); diff --git a/src/ui/egg-hatch-scene-handler.ts b/src/ui/egg-hatch-scene-handler.ts index 6536ef2af80..1733b64144b 100644 --- a/src/ui/egg-hatch-scene-handler.ts +++ b/src/ui/egg-hatch-scene-handler.ts @@ -45,7 +45,7 @@ export class EggHatchSceneHandler extends UiHandler { processInput(button: Button): boolean { if (button === Button.ACTION || button === Button.CANCEL) { const phase = globalScene.phaseManager.getCurrentPhase(); - if (phase?.is("EggHatchPhase") && phase.trySkip()) { + if (phase.is("EggHatchPhase") && phase.trySkip()) { return true; } } diff --git a/src/ui/egg-summary-ui-handler.ts b/src/ui/egg-summary-ui-handler.ts index c66075dd910..db357b849c3 100644 --- a/src/ui/egg-summary-ui-handler.ts +++ b/src/ui/egg-summary-ui-handler.ts @@ -222,7 +222,7 @@ export class EggSummaryUiHandler extends MessageUiHandler { if (button === Button.CANCEL) { if (!this.blockExit) { const phase = globalScene.phaseManager.getCurrentPhase(); - if (phase?.is("EggSummaryPhase")) { + if (phase.is("EggSummaryPhase")) { phase.end(); } success = true; diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index da6bc9ced78..fcdfe437eab 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -125,7 +125,7 @@ export class MenuUiHandler extends MessageUiHandler { const ui = this.getUi(); this.excludedMenus = () => [ { - condition: !!globalScene.phaseManager.getCurrentPhase()?.is("SelectModifierPhase"), + condition: globalScene.phaseManager.getCurrentPhase().is("SelectModifierPhase"), options: [MenuOptions.EGG_GACHA], }, { condition: bypassLogin, options: [MenuOptions.LOG_OUT] }, diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index ff5e7246a6f..3146df85857 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -816,7 +816,7 @@ export class PartyUiHandler extends MessageUiHandler { // TODO: This risks hitting the other options (.MOVE_i and ALL) so does it? Do we need an extra check? if ( option >= PartyOption.FORM_CHANGE_ITEM && - globalScene.phaseManager.getCurrentPhase()?.is("SelectModifierPhase") && + globalScene.phaseManager.getCurrentPhase().is("SelectModifierPhase") && this.partyUiMode === PartyUiMode.CHECK ) { const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); @@ -1504,7 +1504,7 @@ export class PartyUiHandler extends MessageUiHandler { break; case PartyUiMode.CHECK: this.addCommonOptions(pokemon); - if (globalScene.phaseManager.getCurrentPhase()?.is("SelectModifierPhase")) { + if (globalScene.phaseManager.getCurrentPhase().is("SelectModifierPhase")) { const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); for (let i = 0; i < formChangeItemModifiers.length; i++) { this.options.push(PartyOption.FORM_CHANGE_ITEM + i); diff --git a/src/ui/pokedex-page-ui-handler.ts b/src/ui/pokedex-page-ui-handler.ts index 49658d9cfc9..1dc6b25beec 100644 --- a/src/ui/pokedex-page-ui-handler.ts +++ b/src/ui/pokedex-page-ui-handler.ts @@ -705,7 +705,7 @@ export class PokedexPageUiHandler extends MessageUiHandler { show(args: any[]): boolean { // Allow the use of candies if we are in one of the whitelisted phases this.canUseCandies = ["TitlePhase", "SelectStarterPhase", "CommandPhase"].includes( - globalScene.phaseManager.getCurrentPhase()?.phaseName ?? "", + globalScene.phaseManager.getCurrentPhase().phaseName, ); if (args.length >= 1 && args[0] === "refresh") { diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 15a08e9d0f4..7acb6b09032 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -336,7 +336,7 @@ export class StarterSelectUiHandler extends MessageUiHandler { private teraLabel: Phaser.GameObjects.Text; private goFilterLabel: Phaser.GameObjects.Text; /** Group holding the UI elements appearing in the instructionsContainer */ - /* TODO: Uncomment this once our testing infra supports mocks of `Phaser.GameObject.Group` + /* TODO: Uncomment this once our testing infra supports mocks of `Phaser.GameObject.Group` private instructionElemGroup: Phaser.GameObjects.Group; */ @@ -4271,7 +4271,7 @@ export class StarterSelectUiHandler extends MessageUiHandler { globalScene.phaseManager.pushNew("EncounterPhase"); } this.clearText(); - globalScene.phaseManager.getCurrentPhase()?.end(); + globalScene.phaseManager.getCurrentPhase().end(); }, cancel, null, diff --git a/test/abilities/disguise.test.ts b/test/abilities/disguise.test.ts index 4745d6ab609..b3198964873 100644 --- a/test/abilities/disguise.test.ts +++ b/test/abilities/disguise.test.ts @@ -196,7 +196,7 @@ describe("Abilities - Disguise", () => { game.move.select(MoveId.SHADOW_SNEAK); await game.toNextWave(); - expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); expect(game.scene.currentBattle.waveIndex).toBe(2); }); diff --git a/test/battle/battle.test.ts b/test/battle/battle.test.ts index 3dd154cf4eb..a737cab1b88 100644 --- a/test/battle/battle.test.ts +++ b/test/battle/battle.test.ts @@ -86,7 +86,7 @@ describe("Phase - Battle Phase", () => { it("newGame one-liner", async () => { await game.classicMode.startBattle(); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); it("do attack wave 3 - single battle - regular - OHKO", async () => { diff --git a/test/battle/special-battle.test.ts b/test/battle/special-battle.test.ts index d22931bfea5..4fb859a2a40 100644 --- a/test/battle/special-battle.test.ts +++ b/test/battle/special-battle.test.ts @@ -36,62 +36,62 @@ describe("Test Battle Phase", () => { game.override.battleStyle("single").startingWave(10); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); it("startBattle 2vs2 boss", async () => { game.override.battleStyle("double").startingWave(10); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); it("startBattle 2vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); it("startBattle 2vs1 trainer", async () => { game.override.battleStyle("single").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); it("startBattle 2vs1 rival", async () => { game.override.battleStyle("single").startingWave(8); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); it("startBattle 2vs2 rival", async () => { game.override.battleStyle("double").startingWave(8); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); it("startBattle 1vs1 trainer", async () => { game.override.battleStyle("single").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); it("startBattle 2vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); it("startBattle 4vs2 trainer", async () => { game.override.battleStyle("double").startingWave(5); await game.classicMode.startBattle([SpeciesId.BLASTOISE, SpeciesId.CHARIZARD, SpeciesId.DARKRAI, SpeciesId.GABITE]); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); }); }); diff --git a/test/moves/transform-imposter.test.ts b/test/moves/transform-imposter.test.ts index b1631130154..1b38a4bce9c 100644 --- a/test/moves/transform-imposter.test.ts +++ b/test/moves/transform-imposter.test.ts @@ -212,7 +212,7 @@ describe("Transforming Effects", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextWave(); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); expect(game.scene.currentBattle.waveIndex).toBe(2); await game.reload.reloadSession(); @@ -242,7 +242,7 @@ describe("Transforming Effects", () => { await game.setTurnOrder([BattlerIndex.PLAYER, BattlerIndex.ENEMY]); await game.toNextWave(); - expect(game.scene.phaseManager.getCurrentPhase()?.phaseName).toBe("CommandPhase"); + expect(game).toBeAtPhase("CommandPhase"); expect(game.scene.currentBattle.waveIndex).toBe(2); expect(player.getSpeciesForm().speciesId).toBe(enemy.getSpeciesForm().speciesId); diff --git a/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts b/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts index 93cf4537c53..b4bd74d44d6 100644 --- a/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts +++ b/test/mystery-encounter/encounters/a-trainers-test-encounter.test.ts @@ -9,7 +9,6 @@ import { ATrainersTestEncounter } from "#mystery-encounters/a-trainers-test-enco import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; import { PartyHealPhase } from "#phases/party-heal-phase"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { @@ -106,7 +105,7 @@ describe("A Trainer's Test - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(scene.currentBattle.trainer).toBeDefined(); expect( @@ -131,7 +130,7 @@ describe("A Trainer's Test - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const eggsAfter = scene.gameData.eggs; expect(eggsAfter).toBeDefined(); @@ -179,7 +178,7 @@ describe("A Trainer's Test - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const eggsAfter = scene.gameData.eggs; expect(eggsAfter).toBeDefined(); diff --git a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts index 562482dd520..d269e40db0f 100644 --- a/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts +++ b/test/mystery-encounter/encounters/absolute-avarice-encounter.test.ts @@ -10,7 +10,6 @@ import { BerryModifier, PokemonHeldItemModifier } from "#modifiers/modifier"; import { AbsoluteAvariceEncounter } from "#mystery-encounters/absolute-avarice-encounter"; import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; import { MovePhase } from "#phases/move-phase"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { @@ -132,7 +131,7 @@ describe("Absolute Avarice - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(SpeciesId.GREEDENT); const moveset = enemyField[0].moveset.map(m => m.moveId); @@ -148,7 +147,7 @@ describe("Absolute Avarice - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); for (const partyPokemon of scene.getPlayerParty()) { const pokemonId = partyPokemon.id; diff --git a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts index 25116a89ec5..f62f0f0c117 100644 --- a/test/mystery-encounter/encounters/berries-abound-encounter.test.ts +++ b/test/mystery-encounter/encounters/berries-abound-encounter.test.ts @@ -11,7 +11,6 @@ import { BerriesAboundEncounter } from "#mystery-encounters/berries-abound-encou import * as EncounterDialogueUtils from "#mystery-encounters/encounter-dialogue-utils"; import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, @@ -114,7 +113,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); }); @@ -135,7 +134,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const berriesAfter = scene.findModifiers(m => m instanceof BerryModifier) as BerryModifier[]; const berriesAfterCount = berriesAfter.reduce((a, b) => a + b.stackCount, 0); @@ -148,7 +147,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -188,7 +187,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); @@ -212,7 +211,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); @@ -233,7 +232,7 @@ describe("Berries Abound - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts b/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts index bed9d48d063..56f3cbbaed7 100644 --- a/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts +++ b/test/mystery-encounter/encounters/bug-type-superfan-encounter.test.ts @@ -12,7 +12,6 @@ import { PokemonMove } from "#moves/pokemon-move"; import { BugTypeSuperfanEncounter } from "#mystery-encounters/bug-type-superfan-encounter"; import * as encounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; import { MysteryEncounterPhase, MysteryEncounterRewardsPhase } from "#phases/mystery-encounter-phases"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { @@ -231,7 +230,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyParty.length).toBe(2); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -244,7 +243,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyParty.length).toBe(3); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -258,7 +257,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyParty.length).toBe(4); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -273,7 +272,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -289,7 +288,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -307,7 +306,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -325,7 +324,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -343,7 +342,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyParty = scene.getEnemyParty(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyParty.length).toBe(5); expect(scene.currentBattle.trainer?.config.trainerType).toBe(TrainerType.BUG_TYPE_SUPERFAN); expect(enemyParty[0].species.speciesId).toBe(SpeciesId.BEEDRILL); @@ -365,7 +364,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterRewardsPhase.name); + expect(game).toBeAtPhase("MysteryEncounterRewardsPhase"); game.phaseInterceptor["prompts"] = []; // Clear out prompt handlers game.onNextPrompt("MysteryEncounterRewardsPhase", UiMode.OPTION_SELECT, () => { game.phaseInterceptor.superEndPhase(); @@ -406,7 +405,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -416,7 +415,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.BUG_TYPE_SUPERFAN, defaultParty); await runMysteryEncounterToEnd(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -435,7 +434,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { ]); await runMysteryEncounterToEnd(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -457,7 +456,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { ]); await runMysteryEncounterToEnd(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -481,7 +480,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { ]); await runMysteryEncounterToEnd(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -542,7 +541,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -557,7 +556,7 @@ describe("Bug-Type Superfan - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index b573701d568..1d9533978c4 100644 --- a/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -22,7 +22,6 @@ import { ClowningAroundEncounter } from "#mystery-encounters/clowning-around-enc import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import { generateModifierType } from "#mystery-encounters/encounter-phase-utils"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; import { MovePhase } from "#phases/move-phase"; import { PostMysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { NewBattlePhase } from "#phases/new-battle-phase"; @@ -172,7 +171,7 @@ describe("Clowning Around - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(2); expect(enemyField[0].species.speciesId).toBe(SpeciesId.MR_MIME); expect(enemyField[0].moveset).toEqual([ @@ -201,7 +200,7 @@ describe("Clowning Around - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); const abilityToTrain = scene.currentBattle.mysteryEncounter?.misc.ability; @@ -216,7 +215,7 @@ describe("Clowning Around - Mystery Encounter", () => { vi.spyOn(partyUiHandler, "show"); game.endPhase(); await game.phaseInterceptor.to(PostMysteryEncounterPhase); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(PostMysteryEncounterPhase.name); + expect(game).toBeAtPhase("PostMysteryEncounterPhase"); // Wait for Yes/No confirmation to appear await vi.waitFor(() => expect(optionSelectUiHandler.show).toHaveBeenCalled()); diff --git a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts index 97d0ce31367..059e2536c4b 100644 --- a/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts +++ b/test/mystery-encounter/encounters/dancing-lessons-encounter.test.ts @@ -10,7 +10,6 @@ import { PokemonMove } from "#moves/pokemon-move"; import { DancingLessonsEncounter } from "#mystery-encounters/dancing-lessons-encounter"; import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; import { LearnMovePhase } from "#phases/learn-move-phase"; import { MovePhase } from "#phases/move-phase"; import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; @@ -106,7 +105,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(SpeciesId.ORICORIO); expect(enemyField[0].summonData.statStages).toEqual([1, 1, 1, 1, 0, 0, 0]); @@ -127,7 +126,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -227,7 +226,7 @@ describe("Dancing Lessons - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); const partyCountAfter = scene.getPlayerParty().length; - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts index 16c726f1de6..b255e52481b 100644 --- a/test/mystery-encounter/encounters/delibirdy-encounter.test.ts +++ b/test/mystery-encounter/encounters/delibirdy-encounter.test.ts @@ -161,7 +161,7 @@ describe("Delibird-y - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -316,7 +316,7 @@ describe("Delibird-y - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -449,7 +449,7 @@ describe("Delibird-y - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts b/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts index 3d84d70b47e..7ee51e5d3c1 100644 --- a/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts +++ b/test/mystery-encounter/encounters/department-store-sale-encounter.test.ts @@ -93,7 +93,7 @@ describe("Department Store Sale - Mystery Encounter", () => { it("should have shop with only TMs", async () => { await game.runToMysteryEncounter(MysteryEncounterType.DEPARTMENT_STORE_SALE, defaultParty); await runMysteryEncounterToEnd(game, 1); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -130,7 +130,7 @@ describe("Department Store Sale - Mystery Encounter", () => { it("should have shop with only Vitamins", async () => { await game.runToMysteryEncounter(MysteryEncounterType.DEPARTMENT_STORE_SALE, defaultParty); await runMysteryEncounterToEnd(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -170,7 +170,7 @@ describe("Department Store Sale - Mystery Encounter", () => { it("should have shop with only X Items", async () => { await game.runToMysteryEncounter(MysteryEncounterType.DEPARTMENT_STORE_SALE, defaultParty); await runMysteryEncounterToEnd(game, 3); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -210,7 +210,7 @@ describe("Department Store Sale - Mystery Encounter", () => { it("should have shop with only Pokeballs", async () => { await game.runToMysteryEncounter(MysteryEncounterType.DEPARTMENT_STORE_SALE, defaultParty); await runMysteryEncounterToEnd(game, 4); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts index a48422c459f..6df7bfa4f9b 100644 --- a/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts +++ b/test/mystery-encounter/encounters/fiery-fallout-encounter.test.ts @@ -16,7 +16,6 @@ import { AttackTypeBoosterModifier, PokemonHeldItemModifier } from "#modifiers/m import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import { FieryFalloutEncounter } from "#mystery-encounters/fiery-fallout-encounter"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; import { MovePhase } from "#phases/move-phase"; import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; @@ -161,7 +160,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(2); expect(enemyField[0].species.speciesId).toBe(SpeciesId.VOLCARONA); expect(enemyField[1].species.speciesId).toBe(SpeciesId.VOLCARONA); @@ -177,7 +176,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const leadPokemonId = scene.getPlayerParty()?.[0].id; const leadPokemonItems = scene.findModifiers( @@ -266,7 +265,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FIERY_FALLOUT, defaultParty); await runMysteryEncounterToEnd(game, 3); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const leadPokemonItems = scene.getPlayerParty()[0].getHeldItems() as PokemonHeldItemModifier[]; const item = leadPokemonItems.find(i => i instanceof AttackTypeBoosterModifier); @@ -292,7 +291,7 @@ describe("Fiery Fallout - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(continueEncounterSpy).not.toHaveBeenCalled(); }); }); diff --git a/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts b/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts index 8149212f00f..d5cf8cdea88 100644 --- a/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts +++ b/test/mystery-encounter/encounters/fight-or-flight-encounter.test.ts @@ -10,7 +10,6 @@ import { PokemonMove } from "#moves/pokemon-move"; import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import { FightOrFlightEncounter } from "#mystery-encounters/fight-or-flight-encounter"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { @@ -110,7 +109,7 @@ describe("Fight or Flight - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); }); @@ -123,7 +122,7 @@ describe("Fight or Flight - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -166,7 +165,7 @@ describe("Fight or Flight - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -183,7 +182,7 @@ describe("Fight or Flight - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts index 3025b08b8b6..b98c6d94dc1 100644 --- a/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts +++ b/test/mystery-encounter/encounters/fun-and-games-encounter.test.ts @@ -14,7 +14,7 @@ import { FunAndGamesEncounter } from "#mystery-encounters/fun-and-games-encounte import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; +import type { CommandPhase } from "#phases/command-phase"; import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { @@ -131,7 +131,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -143,7 +143,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(game.field.getEnemyPokemon().species.speciesId).toBe(SpeciesId.WOBBUFFET); expect(game.field.getEnemyPokemon().ivs).toEqual([0, 0, 0, 0, 0, 0]); expect(game.field.getEnemyPokemon().nature).toBe(Nature.MILD); @@ -165,7 +165,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); }); it("should have no items in rewards if Wubboffet doesn't take enough damage", async () => { @@ -173,7 +173,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); game.onNextPrompt("MessagePhase", UiMode.MESSAGE, () => { game.endPhase(); }); @@ -184,7 +184,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -200,7 +200,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); game.onNextPrompt("MessagePhase", UiMode.MESSAGE, () => { game.endPhase(); }); @@ -213,7 +213,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -230,7 +230,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); game.onNextPrompt("MessagePhase", UiMode.MESSAGE, () => { game.endPhase(); }); @@ -243,7 +243,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -260,7 +260,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.FUN_AND_GAMES, defaultParty); await runMysteryEncounterToEnd(game, 1, { pokemonNo: 1 }, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); game.onNextPrompt("MessagePhase", UiMode.MESSAGE, () => { game.endPhase(); }); @@ -273,7 +273,7 @@ describe("Fun And Games! - Mystery Encounter", () => { await game.phaseInterceptor.to(SelectModifierPhase, false); // Rewards - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts index 867a33f6ab6..1a480ea6547 100644 --- a/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts +++ b/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts @@ -226,7 +226,7 @@ describe("Global Trade System - Mystery Encounter", () => { await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts b/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts index d29f8fe6a82..5ab452e01af 100644 --- a/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts +++ b/test/mystery-encounter/encounters/lost-at-sea-encounter.test.ts @@ -147,7 +147,7 @@ describe("Lost at Sea - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -212,7 +212,7 @@ describe("Lost at Sea - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts index 5412f269122..f6a6d5c446f 100644 --- a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts +++ b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts @@ -12,7 +12,6 @@ import { MysteriousChallengersEncounter } from "#mystery-encounters/mysterious-c import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; -import { CommandPhase } from "#phases/command-phase"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, @@ -152,7 +151,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); }); @@ -162,7 +161,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -196,7 +195,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, defaultParty); await runMysteryEncounterToEnd(game, 2, undefined, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); }); @@ -206,7 +205,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -253,7 +252,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.MYSTERIOUS_CHALLENGERS, defaultParty); await runMysteryEncounterToEnd(game, 3, undefined, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); }); @@ -263,7 +262,7 @@ describe("Mysterious Challengers - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 3, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/part-timer-encounter.test.ts b/test/mystery-encounter/encounters/part-timer-encounter.test.ts index 63eea8bbca2..1fea698307d 100644 --- a/test/mystery-encounter/encounters/part-timer-encounter.test.ts +++ b/test/mystery-encounter/encounters/part-timer-encounter.test.ts @@ -245,7 +245,7 @@ describe("Part-Timer - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/safari-zone.test.ts b/test/mystery-encounter/encounters/safari-zone.test.ts index ec43dcfb69b..dd41d08df38 100644 --- a/test/mystery-encounter/encounters/safari-zone.test.ts +++ b/test/mystery-encounter/encounters/safari-zone.test.ts @@ -119,7 +119,7 @@ describe("Safari Zone - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts index ff4f73cfbde..3552eb7f689 100644 --- a/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts +++ b/test/mystery-encounter/encounters/teleporting-hijinks-encounter.test.ts @@ -8,7 +8,6 @@ import { SpeciesId } from "#enums/species-id"; import { UiMode } from "#enums/ui-mode"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { TeleportingHijinksEncounter } from "#mystery-encounters/teleporting-hijinks-encounter"; -import { CommandPhase } from "#phases/command-phase"; import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { @@ -157,7 +156,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -167,7 +166,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); }); it("should transport to a new area", async () => { @@ -229,7 +228,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -239,7 +238,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.TELEPORTING_HIJINKS, [SpeciesId.METAGROSS]); await runMysteryEncounterToEnd(game, 2, undefined, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); }); it("should transport to a new area", async () => { @@ -300,7 +299,7 @@ describe("Teleporting Hijinks - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 3, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts b/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts index 4556f7a7f45..ed9631c8e2e 100644 --- a/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-expert-breeder-encounter.test.ts @@ -12,7 +12,6 @@ import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; import { TheExpertPokemonBreederEncounter } from "#mystery-encounters/the-expert-pokemon-breeder-encounter"; -import { CommandPhase } from "#phases/command-phase"; import { PostMysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { @@ -158,7 +157,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { expect(successfullyLoaded).toBe(true); // Check usual battle stuff - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); expect(scene.getPlayerParty().length).toBe(1); @@ -177,7 +176,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const eggsAfter = scene.gameData.eggs; const commonEggs = scene.currentBattle.mysteryEncounter!.misc.pokemon1CommonEggs; @@ -243,7 +242,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { expect(successfullyLoaded).toBe(true); // Check usual battle stuff - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); expect(scene.getPlayerParty().length).toBe(1); @@ -262,7 +261,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const eggsAfter = scene.gameData.eggs; const commonEggs = scene.currentBattle.mysteryEncounter!.misc.pokemon2CommonEggs; @@ -325,7 +324,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { expect(successfullyLoaded).toBe(true); // Check usual battle stuff - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.mysteryEncounter?.encounterMode).toBe(MysteryEncounterMode.TRAINER_BATTLE); expect(scene.getPlayerParty().length).toBe(1); @@ -344,7 +343,7 @@ describe("The Expert Pokémon Breeder - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 3, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const eggsAfter = scene.gameData.eggs; const commonEggs = scene.currentBattle.mysteryEncounter!.misc.pokemon3CommonEggs; diff --git a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts index 611a103dab2..c94e322ee64 100644 --- a/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-pokemon-salesman-encounter.test.ts @@ -182,7 +182,7 @@ describe("The Pokemon Salesman - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 1); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts index a314a14485f..181126a247e 100644 --- a/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-strong-stuff-encounter.test.ts @@ -17,7 +17,6 @@ import { PokemonMove } from "#moves/pokemon-move"; import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { TheStrongStuffEncounter } from "#mystery-encounters/the-strong-stuff-encounter"; -import { CommandPhase } from "#phases/command-phase"; import { MovePhase } from "#phases/move-phase"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { @@ -192,7 +191,7 @@ describe("The Strong Stuff - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(SpeciesId.SHUCKLE); expect(enemyField[0].summonData.statStages).toEqual([0, 1, 0, 1, 0, 0, 0]); @@ -230,7 +229,7 @@ describe("The Strong Stuff - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts index ae2f9fd79ff..b5a8804c2ac 100644 --- a/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts +++ b/test/mystery-encounter/encounters/the-winstrate-challenge-encounter.test.ts @@ -15,7 +15,6 @@ import { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { HUMAN_TRANSITABLE_BIOMES } from "#mystery-encounters/mystery-encounters"; import { TheWinstrateChallengeEncounter } from "#mystery-encounters/the-winstrate-challenge-encounter"; -import { CommandPhase } from "#phases/command-phase"; import { MysteryEncounterRewardsPhase } from "#phases/mystery-encounter-phases"; import { PartyHealPhase } from "#phases/party-heal-phase"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; @@ -263,7 +262,7 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.THE_WINSTRATE_CHALLENGE, defaultParty); await runMysteryEncounterToEnd(game, 1, undefined, true); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(scene.currentBattle.trainer).toBeDefined(); expect(scene.currentBattle.trainer!.config.trainerType).toBe(TrainerType.VICTOR); expect(scene.currentBattle.mysteryEncounter?.enemyPartyConfigs.length).toBe(4); @@ -296,7 +295,7 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { // Should have Macho Brace in the rewards await skipBattleToNextBattle(game, true); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -338,7 +337,7 @@ describe("The Winstrate Challenge - Mystery Encounter", () => { it("should have a Rarer Candy in the rewards", async () => { await game.runToMysteryEncounter(MysteryEncounterType.THE_WINSTRATE_CHALLENGE, defaultParty); await runMysteryEncounterToEnd(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts b/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts index 133fbfb10ba..79bf76dea21 100644 --- a/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts +++ b/test/mystery-encounter/encounters/trash-to-treasure-encounter.test.ts @@ -20,7 +20,6 @@ import { } from "#mystery-encounters/encounter-phase-utils"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { TrashToTreasureEncounter } from "#mystery-encounters/trash-to-treasure-encounter"; -import { CommandPhase } from "#phases/command-phase"; import { MovePhase } from "#phases/move-phase"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { @@ -173,7 +172,7 @@ describe("Trash to Treasure - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.TRASH_TO_TREASURE, defaultParty); await runMysteryEncounterToEnd(game, 1); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const leftovers = scene.findModifier(m => m instanceof TurnHealModifier) as TurnHealModifier; expect(leftovers).toBeDefined(); @@ -221,7 +220,7 @@ describe("Trash to Treasure - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(SpeciesId.GARBODOR); expect(enemyField[0].moveset).toEqual([ @@ -243,7 +242,7 @@ describe("Trash to Treasure - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts index 24d7960049e..4406edfb38e 100644 --- a/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts +++ b/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts @@ -16,7 +16,6 @@ import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils" import { generateModifierType } from "#mystery-encounters/encounter-phase-utils"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { UncommonBreedEncounter } from "#mystery-encounters/uncommon-breed-encounter"; -import { CommandPhase } from "#phases/command-phase"; import { MovePhase } from "#phases/move-phase"; import { MysteryEncounterPhase } from "#phases/mystery-encounter-phases"; import { StatStageChangePhase } from "#phases/stat-stage-change-phase"; @@ -121,7 +120,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); @@ -148,7 +147,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(enemyField[0].species.speciesId).toBe(speciesToSpawn); @@ -200,7 +199,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 2); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); @@ -260,7 +259,7 @@ describe("Uncommon Breed - Mystery Encounter", () => { await runSelectMysteryEncounterOption(game, 3); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); expect(scene.ui.playError).not.toHaveBeenCalled(); // No error sfx, option is disabled expect(mysteryEncounterPhase.handleOptionSelect).not.toHaveBeenCalled(); expect(mysteryEncounterPhase.continueEncounter).not.toHaveBeenCalled(); diff --git a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts index ed0d612e967..c12d985a1c5 100644 --- a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts +++ b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts @@ -10,7 +10,6 @@ import * as EncounterPhaseUtils from "#mystery-encounters/encounter-phase-utils" import * as EncounterTransformationSequence from "#mystery-encounters/encounter-transformation-sequence"; import * as MysteryEncounters from "#mystery-encounters/mystery-encounters"; import { WeirdDreamEncounter } from "#mystery-encounters/weird-dream-encounter"; -import { CommandPhase } from "#phases/command-phase"; import { SelectModifierPhase } from "#phases/select-modifier-phase"; import { runMysteryEncounterToEnd, @@ -117,7 +116,7 @@ describe("Weird Dream - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 1); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); const pokemonAfter = scene.getPlayerParty(); const bstsAfter = pokemonAfter.map(pokemon => pokemon.getSpeciesForm().getBaseStatTotal()); @@ -140,7 +139,7 @@ describe("Weird Dream - Mystery Encounter", () => { await game.runToMysteryEncounter(MysteryEncounterType.WEIRD_DREAM, defaultParty); await runMysteryEncounterToEnd(game, 1); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); @@ -187,7 +186,7 @@ describe("Weird Dream - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); const enemyField = scene.getEnemyField(); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(CommandPhase.name); + expect(game).toBeAtPhase("CommandPhase"); expect(enemyField.length).toBe(1); expect(scene.getEnemyParty().length).toBe(scene.getPlayerParty().length); }); @@ -197,7 +196,7 @@ describe("Weird Dream - Mystery Encounter", () => { await runMysteryEncounterToEnd(game, 2, undefined, true); await skipBattleRunMysteryEncounterRewardsPhase(game); await game.phaseInterceptor.to(SelectModifierPhase, false); - expect(scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(SelectModifierPhase.name); + expect(game).toBeAtPhase("SelectModifierPhase"); await game.phaseInterceptor.run(SelectModifierPhase); expect(scene.ui.getMode()).to.equal(UiMode.MODIFIER_SELECT); diff --git a/test/mystery-encounter/mystery-encounter.test.ts b/test/mystery-encounter/mystery-encounter.test.ts index ec27f7c6a48..d44e3dd2905 100644 --- a/test/mystery-encounter/mystery-encounter.test.ts +++ b/test/mystery-encounter/mystery-encounter.test.ts @@ -34,7 +34,7 @@ describe("Mystery Encounters", () => { ]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - expect(game.scene.phaseManager.getCurrentPhase()!.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); }); it("Encounters should not run on X1 waves", async () => { diff --git a/test/phases/mystery-encounter-phase.test.ts b/test/phases/mystery-encounter-phase.test.ts index 2b6105c7034..bb313972e7a 100644 --- a/test/phases/mystery-encounter-phase.test.ts +++ b/test/phases/mystery-encounter-phase.test.ts @@ -38,7 +38,7 @@ describe("Mystery Encounter Phases", () => { ]); await game.phaseInterceptor.to(MysteryEncounterPhase, false); - expect(game.scene.phaseManager.getCurrentPhase()?.constructor.name).toBe(MysteryEncounterPhase.name); + expect(game).toBeAtPhase("MysteryEncounterPhase"); }); it("Runs MysteryEncounterPhase", async () => { diff --git a/test/test-utils/game-manager.ts b/test/test-utils/game-manager.ts index 33b75fce3a1..d0415d52d60 100644 --- a/test/test-utils/game-manager.ts +++ b/test/test-utils/game-manager.ts @@ -163,7 +163,7 @@ export class GameManager { * End the currently running phase immediately. */ endPhase() { - this.scene.phaseManager.getCurrentPhase()?.end(); + this.scene.phaseManager.getCurrentPhase().end(); } /**