mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-14 13:17:24 +01:00
* cleanup unneeded season definitions * assign first winter seasonal gear right season * add missing winter definition * Fix enddate for winter galas * fix lint * fix halloween sprites * set season * fix loading habitoween sprites * add missing customization shop sprites * Fix test * update customization shop sprites
130 lines
3.5 KiB
JavaScript
130 lines
3.5 KiB
JavaScript
import {
|
|
requester,
|
|
resetHabiticaDB,
|
|
} from '../../../../helpers/api-integration/v3';
|
|
import * as worldState from '../../../../../website/server/libs/worldState';
|
|
import common from '../../../../../website/common';
|
|
|
|
describe('GET /world-state', () => {
|
|
before(async () => {
|
|
await resetHabiticaDB();
|
|
});
|
|
|
|
it('returns empty worldBoss object when world boss is not active (and does not require authentication)', async () => {
|
|
const res = await requester().get('/world-state');
|
|
expect(res.worldBoss).to.eql({});
|
|
});
|
|
|
|
it('returns Tavern quest data when world boss is active', async () => {
|
|
sinon.stub(worldState, 'getWorldBoss').returns({
|
|
active: true, extra: {}, key: 'dysheartener', progress: { hp: 50000, rage: 9999, collect: {} },
|
|
});
|
|
|
|
const res = await requester().get('/world-state');
|
|
expect(res).to.have.nested.property('worldBoss');
|
|
|
|
expect(res.worldBoss).to.eql({
|
|
active: true,
|
|
extra: {},
|
|
key: 'dysheartener',
|
|
progress: {
|
|
collect: {},
|
|
hp: 50000,
|
|
rage: 9999,
|
|
},
|
|
});
|
|
worldState.getWorldBoss.restore();
|
|
});
|
|
|
|
it('calls getRepeatingEvents for data', async () => {
|
|
const getRepeatingEventsOnDate = sinon.stub(common.content, 'getRepeatingEventsOnDate').returns([]);
|
|
const getCurrentGalaEvent = sinon.stub(common.schedule, 'getCurrentGalaEvent').returns({});
|
|
|
|
await requester().get('/world-state');
|
|
|
|
expect(getRepeatingEventsOnDate).to.have.been.calledOnce;
|
|
expect(getCurrentGalaEvent).to.have.been.calledOnce;
|
|
|
|
getRepeatingEventsOnDate.restore();
|
|
getCurrentGalaEvent.restore();
|
|
});
|
|
|
|
context('no current event', () => {
|
|
beforeEach(async () => {
|
|
sinon.stub(worldState, 'getCurrentEventList').returns([]);
|
|
});
|
|
|
|
afterEach(() => {
|
|
worldState.getCurrentEventList.restore();
|
|
});
|
|
|
|
it('returns null for the current event when there is none active', async () => {
|
|
const res = await requester().get('/world-state');
|
|
|
|
expect(res.currentEvent).to.be.null;
|
|
});
|
|
});
|
|
|
|
context('active event', () => {
|
|
const evt = {
|
|
...common.content.events.fall2020,
|
|
event: 'fall2020',
|
|
};
|
|
|
|
beforeEach(async () => {
|
|
sinon.stub(worldState, 'getCurrentEventList').returns([evt]);
|
|
});
|
|
|
|
afterEach(() => {
|
|
worldState.getCurrentEventList.restore();
|
|
});
|
|
|
|
it('returns the current event when there is an active one', async () => {
|
|
const res = await requester().get('/world-state');
|
|
|
|
expect(res.currentEvent).to.eql(evt);
|
|
});
|
|
});
|
|
|
|
context('active event with NPC image suffix', () => {
|
|
const evt = {
|
|
...common.content.events.fall2020,
|
|
event: 'fall2020',
|
|
npcImageSuffix: 'fall',
|
|
};
|
|
|
|
beforeEach(async () => {
|
|
sinon.stub(worldState, 'getCurrentEventList').returns([evt]);
|
|
});
|
|
|
|
afterEach(() => {
|
|
worldState.getCurrentEventList.restore();
|
|
});
|
|
|
|
it('returns the NPC image suffix when present', async () => {
|
|
const res = await requester().get('/world-state');
|
|
|
|
expect(res.npcImageSuffix).to.equal('fall');
|
|
});
|
|
|
|
it('returns the NPC image suffix with multiple events present', async () => {
|
|
const evt2 = {
|
|
...common.content.events.winter2020,
|
|
event: 'test',
|
|
};
|
|
|
|
const evt3 = {
|
|
...common.content.events.winter2020,
|
|
event: 'winter2020',
|
|
npcImageSuffix: 'winter',
|
|
};
|
|
|
|
worldState.getCurrentEventList.returns([evt, evt2, evt3]);
|
|
|
|
const res = await requester().get('/world-state');
|
|
|
|
expect(res.npcImageSuffix).to.equal('fall');
|
|
});
|
|
});
|
|
});
|