mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-13 12:47:28 +01:00
68 lines
2.9 KiB
JavaScript
68 lines
2.9 KiB
JavaScript
/* eslint-disable global-require */
|
|
import { expect } from 'chai';
|
|
import nconf from 'nconf';
|
|
|
|
const SWITCHOVER_TIME = nconf.get('CONTENT_SWITCHOVER_TIME_OFFSET') || 0;
|
|
|
|
describe('datedMemoize', () => {
|
|
it('should return a function that returns a function', () => {
|
|
const datedMemoize = require('../../../website/common/script/fns/datedMemoize').default;
|
|
const memoized = datedMemoize(() => {});
|
|
expect(memoized).to.be.a('function');
|
|
});
|
|
|
|
it('should not call multiple times', () => {
|
|
const stub = sandbox.stub().returns({});
|
|
const datedMemoize = require('../../../website/common/script/fns/datedMemoize').default;
|
|
const memoized = datedMemoize(stub);
|
|
memoized(1, 2);
|
|
memoized(1, 3);
|
|
expect(stub).to.have.been.calledOnce;
|
|
});
|
|
|
|
it('call multiple times for different identifiers', () => {
|
|
const stub = sandbox.stub().returns({});
|
|
const datedMemoize = require('../../../website/common/script/fns/datedMemoize').default;
|
|
const memoized = datedMemoize(stub);
|
|
memoized({ identifier: 'a', memoizeConfig: true }, 1, 2);
|
|
memoized({ identifier: 'b', memoizeConfig: true }, 1, 2);
|
|
expect(stub).to.have.been.calledTwice;
|
|
});
|
|
|
|
it('call once for the same identifier', () => {
|
|
const stub = sandbox.stub().returns({});
|
|
const datedMemoize = require('../../../website/common/script/fns/datedMemoize').default;
|
|
const memoized = datedMemoize(stub);
|
|
memoized({ identifier: 'a', memoizeConfig: true }, 1, 2);
|
|
memoized({ identifier: 'a', memoizeConfig: true }, 1, 2);
|
|
expect(stub).to.have.been.calledOnce;
|
|
});
|
|
|
|
it('call once on the same day', () => {
|
|
const stub = sandbox.stub().returns({});
|
|
const datedMemoize = require('../../../website/common/script/fns/datedMemoize').default;
|
|
const memoized = datedMemoize(stub);
|
|
memoized({ date: new Date('2024-01-01'), memoizeConfig: true }, 1, 2);
|
|
memoized({ date: new Date('2024-01-01'), memoizeConfig: true }, 1, 2);
|
|
expect(stub).to.have.been.calledOnce;
|
|
});
|
|
|
|
it('call multiple times on different days', () => {
|
|
const stub = sandbox.stub().returns({});
|
|
const datedMemoize = require('../../../website/common/script/fns/datedMemoize').default;
|
|
const memoized = datedMemoize(stub);
|
|
memoized({ date: new Date('2024-01-01'), memoizeConfig: true }, 1, 2);
|
|
memoized({ date: new Date('2024-01-02'), memoizeConfig: true }, 1, 2);
|
|
expect(stub).to.have.been.calledTwice;
|
|
});
|
|
|
|
it('respects switchover time', () => {
|
|
const stub = sandbox.stub().returns({});
|
|
const datedMemoize = require('../../../website/common/script/fns/datedMemoize').default;
|
|
const memoized = datedMemoize(stub);
|
|
memoized({ date: new Date('2024-01-01T00:00:00.000Z'), memoizeConfig: true }, 1, 2);
|
|
memoized({ date: new Date(`2024-01-01T${String(SWITCHOVER_TIME).padStart(2, '0')}`), memoizeConfig: true }, 1, 2);
|
|
expect(stub).to.have.been.calledTwice;
|
|
});
|
|
});
|