Files
backend/src/integrations/tbank/tbank-source.policy.spec.ts
T

35 lines
1.1 KiB
TypeScript

import {
tbankSourceNeedsRefresh,
tbankSourceTtlMs,
} from './tbank-source.policy';
describe('request-driven source freshness', () => {
it.each(Object.keys(tbankSourceTtlMs) as (keyof typeof tbankSourceTtlMs)[])(
'%s expires at its boundary without changing source time',
(source) => {
const fetchedAt = new Date('2026-09-01Z');
// eslint-disable-next-line security/detect-object-injection -- The key comes from the local source-policy test table.
const ttl = tbankSourceTtlMs[source];
expect(
tbankSourceNeedsRefresh(
source,
fetchedAt,
new Date(fetchedAt.valueOf() + ttl - 1000),
),
).toBe(false);
expect(
tbankSourceNeedsRefresh(
source,
fetchedAt,
new Date(fetchedAt.valueOf() + ttl),
),
).toBe(true);
expect(tbankSourceNeedsRefresh(source, fetchedAt, fetchedAt, true)).toBe(
true,
);
expect(tbankSourceNeedsRefresh(source, null, fetchedAt)).toBe(true);
expect(fetchedAt.toISOString()).toBe('2026-09-01T00:00:00.000Z');
},
);
});