habitica/test/content/armoire.test.js

65 lines
2.4 KiB
JavaScript
Raw Normal View History

2024-04-30 16:11:09 +00:00
/* eslint-disable global-require */
import forEach from 'lodash/forEach';
2024-05-08 15:05:09 +00:00
import {
expectValidTranslationString,
} from '../helpers/content.helper';
function makeArmoireIitemList () {
const armoire = require('../../website/common/script/content/gear/sets/armoire').default;
2024-05-08 15:05:09 +00:00
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));
2024-05-08 15:05:09 +00:00
return items;
}
2024-04-30 16:11:09 +00:00
describe('armoire', () => {
let clock;
beforeEach(() => {
2024-05-08 15:05:09 +00:00
delete require.cache[require.resolve('../../website/common/script/content/gear/sets/armoire')];
2024-04-30 16:11:09 +00:00
});
afterEach(() => {
clock.restore();
});
it('does not return unreleased gear', async () => {
2024-05-08 15:05:09 +00:00
clock = sinon.useFakeTimers(new Date('2024-01-01'));
const items = makeArmoireIitemList();
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;
2024-04-30 16:11:09 +00:00
});
2024-05-08 15:05:09 +00:00
it('released gear has all required properties', async () => {
clock = sinon.useFakeTimers(new Date('2024-05-08'));
const items = makeArmoireIitemList();
2024-05-14 09:07:15 +00:00
expect(items.length).to.equal(396);
2024-05-08 15:05:09 +00:00
forEach(items, item => {
if (item.set !== undefined) {
2024-05-14 09:07:15 +00:00
expect(item.set, item.key).to.be.a('string');
expect(item.set, item.key).to.not.be.empty;
2024-05-08 15:05:09 +00:00
}
expectValidTranslationString(item.text);
2024-05-14 09:07:15 +00:00
expect(item.value, item.key).to.be.a('number');
2024-05-08 15:05:09 +00:00
});
});
it('releases gear when appropriate', async () => {
clock = sinon.useFakeTimers(new Date('2024-01-01'));
const items = makeArmoireIitemList();
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();
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-20'));
const febuaryItems = makeArmoireIitemList();
expect(febuaryItems.length).to.equal(384);
});
2024-04-30 16:11:09 +00:00
});