From 87fc01cb817ffc819158739e92a187682aea147b Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 30 Apr 2024 18:11:09 +0200 Subject: [PATCH] improve armoire release process --- test/content/armoire.test.js | 34 +++++++++++++++++++ .../script/content/gear/sets/armoire.js | 25 +++++++++----- 2 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 test/content/armoire.test.js diff --git a/test/content/armoire.test.js b/test/content/armoire.test.js new file mode 100644 index 0000000000..a387d0a0b1 --- /dev/null +++ b/test/content/armoire.test.js @@ -0,0 +1,34 @@ +/* eslint-disable global-require */ +import forEach from 'lodash/forEach'; + +describe('armoire', () => { + let clock; + beforeEach(() => { + clock = sinon.useFakeTimers(new Date('2024-01-01')); + }); + afterEach(() => { + clock.restore(); + }); + it('does not return unreleased gear', async () => { + const { + armor, + body, + eyewear, + head, + headAccessory, + shield, + weapon, + } = require('../../website/common/script/content/gear/sets/armoire'); + const items = []; + items.push(...Object.values(armor)); + items.push(...Object.values(body)); + items.push(...Object.values(eyewear)); + items.push(...Object.values(head)); + items.push(...Object.values(headAccessory)); + items.push(...Object.values(shield)); + items.push(...Object.values(weapon)); + forEach(items, item => { + expect(item.released).to.be.true; + }); + }); +}); diff --git a/website/common/script/content/gear/sets/armoire.js b/website/common/script/content/gear/sets/armoire.js index fb68285d2b..7a88bbe7d9 100644 --- a/website/common/script/content/gear/sets/armoire.js +++ b/website/common/script/content/gear/sets/armoire.js @@ -1799,14 +1799,15 @@ const weapon = { }, }; +const releaseDay = 7; const releaseDates = { - somethingSpooky: '2023-10-10T08:00-04:00', - cookingImplementsTwo: '2023-11-07T08:00-05:00', - greenTrapper: '2023-12-05T08:00-05:00', - schoolUniform: '2024-01-04T08:00-05:00', - whiteLoungeWear: '2024-02-06T08:00-05:00', - hatterSet: '2024-03-05T08:00-05:00', - optimistSet: '2024-03-05T00:00-05:00', + somethingSpooky: { year: 2023, month: 10 }, + cookingImplementsTwo: { year: 2023, month: 11 }, + greenTrapper: { year: 2023, month: 12 }, + schoolUniform: { year: 2024, month: 1 }, + whiteLoungeWear: { year: 2024, month: 2 }, + hatterSet: { year: 2024, month: 3 }, + optimistSet: { year: 2024, month: 4 }, }; forEach({ @@ -1818,6 +1819,8 @@ forEach({ shield, weapon, }, (set, setKey) => { + const today = moment(); + const releaseDateEndPart = `${releaseDay}T08:00-05:00`; forEach(set, (gearItem, gearKey) => { const gearStats = {}; const gearStatValues = []; @@ -1841,8 +1844,14 @@ forEach({ } else { notes = t(`${setKey}Armoire${upperFirst(gearKey)}Notes`); } + let released; + if (releaseDates[gearItem.set]) { + released = today.isAfter(`${releaseDates[gearItem.set].year}-${releaseDates[gearItem.set].month}-${releaseDateEndPart}`); + } else { + released = true; + } defaults(gearItem, { - released: releaseDates[gearItem.set] ? moment().isAfter(releaseDates[gearItem.set]) : true, + released, canOwn: ownsItem(`${setKey}_armoire_${gearKey}`), notes, text: t(`${setKey}Armoire${upperFirst(gearKey)}Text`),