mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-14 13:17:24 +01:00
* Fix schedule using wrong month at the beginning hours of month * fix broken test * fix switchover for time based matchers * Fix scheduling issue related to timezones * Fix end date creating issues
111 lines
3.6 KiB
JavaScript
111 lines
3.6 KiB
JavaScript
import {
|
|
generateUser,
|
|
} from '../helpers/common.helper';
|
|
|
|
import timeTravelers from '../../website/common/script/content/time-travelers';
|
|
|
|
describe('time-travelers store', () => {
|
|
let user;
|
|
let date;
|
|
beforeEach(() => {
|
|
user = generateUser();
|
|
});
|
|
|
|
describe('on january 15th', () => {
|
|
beforeEach(() => {
|
|
date = new Date('2024-01-15');
|
|
});
|
|
it('returns the correct gear', () => {
|
|
const items = timeTravelers.timeTravelerStore(user, date);
|
|
for (const [key] of Object.entries(items)) {
|
|
if (key.startsWith('20')) {
|
|
expect(key).to.match(/20[0-9]{2}(01|07)/);
|
|
}
|
|
}
|
|
});
|
|
it('removes owned sets from the time travelers store', () => {
|
|
user.items.gear.owned.head_mystery_201601 = true; // eslint-disable-line camelcase
|
|
const items = timeTravelers.timeTravelerStore(user, date);
|
|
expect(items['201601']).to.not.exist;
|
|
expect(items['201801']).to.exist;
|
|
expect(items['202207']).to.exist;
|
|
});
|
|
|
|
it('removes unopened mystery item sets from the time travelers store', () => {
|
|
user.purchased = {
|
|
plan: {
|
|
mysteryItems: ['head_mystery_201601'],
|
|
},
|
|
};
|
|
const items = timeTravelers.timeTravelerStore(user, date);
|
|
expect(items['201601']).to.not.exist;
|
|
expect(items['201607']).to.exist;
|
|
});
|
|
});
|
|
|
|
describe('on may 1st', () => {
|
|
beforeEach(() => {
|
|
date = new Date('2024-05-01T09:00:00.000Z');
|
|
});
|
|
it('returns the correct gear', () => {
|
|
const items = timeTravelers.timeTravelerStore(user, date);
|
|
for (const [key] of Object.entries(items)) {
|
|
if (key.startsWith('20')) {
|
|
expect(key).to.match(/20[0-9]{2}(05|11)/);
|
|
}
|
|
}
|
|
});
|
|
it('removes owned sets from the time travelers store', () => {
|
|
user.items.gear.owned.head_mystery_201705 = true; // eslint-disable-line camelcase
|
|
const items = timeTravelers.timeTravelerStore(user, date);
|
|
expect(items['201705']).to.not.exist;
|
|
expect(items['201805']).to.exist;
|
|
expect(items['202211']).to.exist;
|
|
});
|
|
|
|
it('removes unopened mystery item sets from the time travelers store', () => {
|
|
user.purchased = {
|
|
plan: {
|
|
mysteryItems: ['head_mystery_201705'],
|
|
},
|
|
};
|
|
const items = timeTravelers.timeTravelerStore(user, date);
|
|
expect(items['201705']).to.not.exist;
|
|
expect(items['201611']).to.exist;
|
|
});
|
|
});
|
|
|
|
describe('on october 21st', () => {
|
|
beforeEach(() => {
|
|
date = new Date('2024-10-21');
|
|
});
|
|
it('returns the correct gear', () => {
|
|
const items = timeTravelers.timeTravelerStore(user, date);
|
|
for (const [key] of Object.entries(items)) {
|
|
if (key.startsWith('20')) {
|
|
expect(key).to.match(/20[0-9]{2}(10|04)/);
|
|
}
|
|
}
|
|
});
|
|
it('removes owned sets from the time travelers store', () => {
|
|
user.items.gear.owned.head_mystery_201810 = true; // eslint-disable-line camelcase
|
|
user.items.gear.owned.armor_mystery_201810 = true; // eslint-disable-line camelcase
|
|
const items = timeTravelers.timeTravelerStore(user, date);
|
|
expect(items['201810']).to.not.exist;
|
|
expect(items['201910']).to.exist;
|
|
expect(items['202204']).to.exist;
|
|
});
|
|
|
|
it('removes unopened mystery item sets from the time travelers store', () => {
|
|
user.purchased = {
|
|
plan: {
|
|
mysteryItems: ['armor_mystery_201710'],
|
|
},
|
|
};
|
|
const items = timeTravelers.timeTravelerStore(user, date);
|
|
expect(items['201710']).to.not.exist;
|
|
expect(items['201604']).to.exist;
|
|
});
|
|
});
|
|
});
|