deckhearth/test/lib/card-import-discover.test.js

66 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

import { describe, expect, it } from 'vitest';
import {
filterMissingMtgSets,
filterMissingPokemonSets,
} from '../../lib/card-import/discover.js';
describe('filterMissingMtgSets', () => {
const now = new Date('2026-05-27T12:00:00.000Z');
it('returns released paper sets missing from the catalog, newest first', () => {
const known = new Set(['lea']);
const missing = filterMissingMtgSets(
[
{ code: 'lea', name: 'Alpha', released_at: '1993-08-05', set_type: 'core', digital: false },
{ code: 'fin', name: 'Final Fantasy', released_at: '2026-05-01', set_type: 'expansion', digital: false },
{ code: 'dsk', name: 'Duskmourn', released_at: '2024-09-27', set_type: 'expansion', digital: false },
{ code: 'tlea', name: 'Alpha Tokens', released_at: '1993-08-05', set_type: 'token', digital: false },
{ code: 'mh3', name: 'Modern Horizons 3', released_at: '2027-01-01', set_type: 'expansion', digital: false },
],
known,
now
);
expect(missing).toEqual([
{
code: 'fin',
name: 'Final Fantasy',
releasedAt: '2026-05-01',
},
{
code: 'dsk',
name: 'Duskmourn',
releasedAt: '2024-09-27',
},
]);
});
});
describe('filterMissingPokemonSets', () => {
it('returns sets whose ids are not in the catalog, newest first', () => {
const known = new Set(['sv1']);
const missing = filterMissingPokemonSets(
[
{ id: 'sv1', name: 'Scarlet & Violet', releaseDate: '2023-03-31' },
{ id: 'sv2', name: 'Paldea Evolved', releaseDate: '2023-06-09' },
{ id: 'sv3', name: 'Obsidian Flames', releaseDate: '2023-08-11' },
],
known
);
expect(missing).toEqual([
{
id: 'sv3',
name: 'Obsidian Flames',
releasedAt: '2023-08-11',
},
{
id: 'sv2',
name: 'Paldea Evolved',
releasedAt: '2023-06-09',
},
]);
});
});