habitica/test/content/armoire.test.js

76 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 {
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;
}
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);
2024-04-30 16:11:09 +00:00
forEach(items, item => {
expect(item.released).to.be.true;
});
});
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();
expect(items.length).to.equal(392);
forEach(items, item => {
if (item.set !== undefined) {
expect(item.set).to.be.a('string');
expect(item.set).to.not.be.empty;
}
expectValidTranslationString(item.text);
expect(item.released).to.be.a('boolean');
expect(item.value).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);
});
2024-04-30 16:11:09 +00:00
});