diff --git a/src/scripts/main.js b/src/scripts/main.js index 4518b143..1c3d2e24 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1187,7 +1187,6 @@ import * as detailingFuncs from './modules/details/legacy'; "Iceberg": stagingFuncs.addIcebergStage, "Living Garden": stagingFuncs.addGardenStage, "Lost City": stagingFuncs.addLostCityStage, - "Muridae Market": stagingFuncs.addMuridaeMarketStage, "Queso Geyser": stagingFuncs.addQuesoGeyserStage, "Sand Dunes": stagingFuncs.addSandDunesStage, "Seasonal Garden": stagingFuncs.addSeasonalGardenStage, diff --git a/src/scripts/modules/stages/environments/muridaeMarket.ts b/src/scripts/modules/stages/environments/muridaeMarket.ts new file mode 100644 index 00000000..069f3894 --- /dev/null +++ b/src/scripts/modules/stages/environments/muridaeMarket.ts @@ -0,0 +1,18 @@ +import {type User} from '@scripts/types/hg'; +import {type IntakeMessage} from '@scripts/types/mhct'; +import {type IStager} from '../stages.types'; + +export class MuridaeMarketStager implements IStager { + readonly environment: string = 'Muridae Market'; + + /** + * Report the Artisan Charm status. + */ + addStage(message: IntakeMessage, userPre: User, userPost: User, journal: unknown): void { + const charm = userPre.trinket_name; + + message.stage = charm === "Artisan Charm" + ? "Artisan" + : "Not Artisan"; + } +} diff --git a/src/scripts/modules/stages/index.ts b/src/scripts/modules/stages/index.ts index 3ca898bf..51a8d819 100644 --- a/src/scripts/modules/stages/index.ts +++ b/src/scripts/modules/stages/index.ts @@ -10,6 +10,7 @@ import {IceFortressStager} from './environments/iceFortress'; import {LabyrinthStager} from './environments/labyrinth'; import {MoussuPicchuStager} from './environments/moussuPicchu'; import {MousoleumStager} from './environments/mousoleum'; +import {MuridaeMarketStager} from './environments/muridaeMarket'; import {SlushyShorelineStager} from './environments/slushyShoreline'; import {SuperBrieFactoryStager} from './environments/superBrieFactory'; @@ -25,6 +26,7 @@ const stageModules: IStager[] = [ new LabyrinthStager(), new MoussuPicchuStager(), new MousoleumStager(), + new MuridaeMarketStager(), new SlushyShorelineStager(), new SuperBrieFactoryStager(), ]; diff --git a/src/scripts/modules/stages/legacy.js b/src/scripts/modules/stages/legacy.js index bd418d0d..779576b8 100644 --- a/src/scripts/modules/stages/legacy.js +++ b/src/scripts/modules/stages/legacy.js @@ -176,20 +176,6 @@ export function addIcebergStage(message, user, user_post, hunt) { } } -/** - * Report the Artisan Charm status. - * @param {Object } message The message to be sent. - * @param {Object } user The user state object, when the hunt was invoked (pre-hunt). - * @param {Object } user_post The user state object, after the hunt. - * @param {Object } hunt The journal entry corresponding to the active hunt. - */ -export function addMuridaeMarketStage(message, user, user_post, hunt) { - message.stage = "Not Artisan"; - if (user.trinket_name === "Artisan Charm") { - message.stage = "Artisan"; - } -} - /** * Report the zone and depth, if any. * @param {Object } message The message to be sent. diff --git a/tests/scripts/modules/stages/environments/muridaeMarket.spec.ts b/tests/scripts/modules/stages/environments/muridaeMarket.spec.ts index 04908f44..20d3e088 100644 --- a/tests/scripts/modules/stages/environments/muridaeMarket.spec.ts +++ b/tests/scripts/modules/stages/environments/muridaeMarket.spec.ts @@ -1,26 +1,33 @@ -import {addMuridaeMarketStage} from "@scripts/modules/stages/legacy"; +import {MuridaeMarketStager} from "@scripts/modules/stages/environments/muridaeMarket"; import {User} from "@scripts/types/hg"; import {IntakeMessage} from "@scripts/types/mhct"; describe('Muridae Market stages', () => { + it('should be for the "Muridae Market" environment', () => { + const stager = new MuridaeMarketStager(); + expect(stager.environment).toBe('Muridae Market'); + }); + it('should set stage to "Artisan" if user has artisan charm equipped', () => { + const stager = new MuridaeMarketStager(); const message = {} as IntakeMessage; const preUser = {trinket_name: 'Artisan Charm'} as User; const postUser = {} as User; const journal = {}; - addMuridaeMarketStage(message, preUser, postUser, journal); + stager.addStage(message, preUser, postUser, journal); expect(message.stage).toBe('Artisan'); }); it('should set stage to "Not Artisan" if user does not has artisan charm equipped', () => { + const stager = new MuridaeMarketStager(); const message = {} as IntakeMessage; const preUser = {trinket_name: 'Power Charm'} as User; const postUser = {} as User; const journal = {}; - addMuridaeMarketStage(message, preUser, postUser, journal); + stager.addStage(message, preUser, postUser, journal); expect(message.stage).toBe('Not Artisan'); });