Files
habitica/test/content/armoire.test.js
Phillip Thelen 6591f6780c test fixes
2024-05-14 11:07:15 +02:00

76 lines
2.4 KiB
JavaScript

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