diff --git a/test/content/armoire.test.js b/test/content/armoire.test.js index 5ed052d7a9..7caac823e0 100644 --- a/test/content/armoire.test.js +++ b/test/content/armoire.test.js @@ -3,38 +3,25 @@ import forEach from 'lodash/forEach'; import { expectValidTranslationString, } from '../helpers/content.helper'; - -function makeArmoireIitemList () { - const armoire = require('../../website/common/script/content/gear/sets/armoire').default; - const items = []; - items.push(...Object.values(armoire.armor)); - items.push(...Object.values(armoire.body)); - items.push(...Object.values(armoire.eyewear)); - items.push(...Object.values(armoire.head)); - items.push(...Object.values(armoire.headAccessory)); - items.push(...Object.values(armoire.shield)); - items.push(...Object.values(armoire.weapon)); - return items; -} +import armoire from '../../website/common/script/content/gear/sets/armoire'; describe('armoire', () => { let clock; - beforeEach(() => { - delete require.cache[require.resolve('../../website/common/script/content/gear/sets/armoire')]; - }); afterEach(() => { - clock.restore(); + if (clock) { + clock.restore(); + } }); it('does not return unreleased gear', async () => { clock = sinon.useFakeTimers(new Date('2024-01-02')); - const items = makeArmoireIitemList(); + const items = armoire.all; expect(items.length).to.equal(377); expect(items.filter(item => item.set === 'pottersSet' || item.set === 'optimistSet' || item.set === 'schoolUniform')).to.be.an('array').that.is.empty; }); it('released gear has all required properties', async () => { clock = sinon.useFakeTimers(new Date('2024-05-08')); - const items = makeArmoireIitemList(); + const items = armoire.all; expect(items.length).to.equal(396); forEach(items, item => { if (item.set !== undefined) { @@ -48,29 +35,30 @@ describe('armoire', () => { it('releases gear when appropriate', async () => { clock = sinon.useFakeTimers(new Date('2024-01-01T00:00:00.000Z')); - const items = makeArmoireIitemList(); + const items = armoire.all; expect(items.length).to.equal(377); clock.restore(); delete require.cache[require.resolve('../../website/common/script/content/gear/sets/armoire')]; clock = sinon.useFakeTimers(new Date('2024-01-08')); - const januaryItems = makeArmoireIitemList(); + const januaryItems = armoire.all; expect(januaryItems.length).to.equal(381); clock.restore(); delete require.cache[require.resolve('../../website/common/script/content/gear/sets/armoire')]; clock = sinon.useFakeTimers(new Date('2024-02-07')); - const januaryItems2 = makeArmoireIitemList(); + const januaryItems2 = armoire.all; expect(januaryItems2.length).to.equal(381); clock.restore(); delete require.cache[require.resolve('../../website/common/script/content/gear/sets/armoire')]; clock = sinon.useFakeTimers(new Date('2024-02-07T09:00:00.000Z')); - const febuaryItems = makeArmoireIitemList(); + const febuaryItems = armoire.all; expect(febuaryItems.length).to.equal(384); }); it('sets have at least 2 items', () => { - const armoire = makeArmoireIitemList(); const setMap = {}; - forEach(armoire, item => { + forEach(armoire.all, item => { + // Gotta have one outlier + if (!item.set || item.set.startsWith('armoire-')) return; if (setMap[item.set] === undefined) { setMap[item.set] = 0; } diff --git a/website/common/script/content/gear/sets/armoire.js b/website/common/script/content/gear/sets/armoire.js index 1173ce3c49..244b4d6f1b 100644 --- a/website/common/script/content/gear/sets/armoire.js +++ b/website/common/script/content/gear/sets/armoire.js @@ -1932,4 +1932,16 @@ export default { get weapon () { return memoizedUpdatReleased({ identifier: 'weapon', memoizeConfig: true }, weapon); }, + // convenience method for tests mostly. Not used in the app + get all () { + const items = []; + items.push(...Object.values(this.armor)); + items.push(...Object.values(this.body)); + items.push(...Object.values(this.eyewear)); + items.push(...Object.values(this.head)); + items.push(...Object.values(this.headAccessory)); + items.push(...Object.values(this.shield)); + items.push(...Object.values(this.weapon)); + return items; + }, };