deckhearth/test/lib/card-visual-match.test.js

41 lines
1.1 KiB
JavaScript
Raw Normal View History

import { describe, expect, it } from 'vitest';
import { resolveVisualCandidates } from '../../lib/card-visual-match.js';
describe('resolveVisualCandidates', () => {
const baseCard = {
id: 1,
name: 'Lightning Bolt',
set_name: 'Alpha',
set_code: 'lea',
card_number: '161',
game: 'mtg',
rarity: 'common',
image_url: 'https://example.com/bolt.jpg',
card_type: 'Instant',
mana_cost: '{R}',
power: null,
};
it('escalates when no candidates remain', () => {
expect(resolveVisualCandidates([]).type).toBe('escalate');
});
it('auto-matches a clear visual winner', () => {
const result = resolveVisualCandidates([
{ ...baseCard, sim: 0.9 },
{ ...baseCard, id: 2, sim: 0.7 },
]);
expect(result.type).toBe('matched');
expect(result.card.id).toBe(1);
});
it('opens disambiguation when top matches are close', () => {
const result = resolveVisualCandidates([
{ ...baseCard, sim: 0.8 },
{ ...baseCard, id: 2, set_name: 'Beta', sim: 0.77 },
]);
expect(result.type).toBe('disambiguation');
expect(result.matches).toHaveLength(2);
});
});