import { describe, it, expect } from 'vitest'; import { computeDeckStats, isBasicLand, BASIC_LAND_NAMES } from '../../lib/deck-builder-stats.js'; describe('isBasicLand', () => { it('returns true for each basic land name', () => { for (const name of BASIC_LAND_NAMES) { expect(isBasicLand({ name })).toBe(true); } }); it('returns false for non-basic cards', () => { expect(isBasicLand({ name: 'Lightning Bolt' })).toBe(false); }); }); describe('computeDeckStats', () => { it('returns zeros for an empty deck', () => { expect(computeDeckStats([])).toEqual({ totalCards: 0, avgCmc: 0, colorCounts: {}, typeCounts: {}, }); }); it('quantity-weights CMC and parses JSON colors', () => { const stats = computeDeckStats([ { quantity: 2, cmc: 3, colors: '["R","G"]', card_type: 'Creature — Elf' }, { quantity: 1, cmc: 1, colors: '["R"]', card_type: 'Instant' }, ]); expect(stats.totalCards).toBe(3); expect(stats.avgCmc).toBe('2.3'); expect(stats.colorCounts).toEqual({ R: 3, G: 2 }); expect(stats.typeCounts.Creature).toBe(2); expect(stats.typeCounts.Instant).toBe(1); }); });