SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
4.7 KB · 63 lines typescript
Raw Blame History
1import { describe, expect, it } from 'vitest';2import { CATEGORIES, FAMILIES, getCategory, normalizeCondition, parseGradeFromTitle, variantKey, indexForCategory, descendants } from './index.js';34describe('taxonomy', () => {5  it('loads a large, consistent tree', () => {6    expect(FAMILIES.length).toBeGreaterThan(90);7    expect(CATEGORIES.length).toBeGreaterThan(FAMILIES.length);8    const slugs = new Set(CATEGORIES.map((c) => c.slug));9    expect(slugs.size).toBe(CATEGORIES.length);10    expect(getCategory('pokemon')?.familySlug).toBe('trading_cards');11    expect(getCategory('pokemon')?.index).toBe('RARE-TCG');12    expect(descendants('trading_cards')).toContain('pokemon');13  });14  it('normalises conditions per scale', () => {15    expect(normalizeCondition('pokemon', 'Near Mint')).toBe('near_mint');16    expect(normalizeCondition('nintendo_games', 'Complete In Box')).toBe('cib');17    expect(normalizeCondition('nike_jordan', 'DS')).toBe('deadstock');18    expect(normalizeCondition('rolex', 'Unworn')).toBe('unworn');19    expect(normalizeCondition('rolex', 'weird')).toBeNull();20  });21  it('parses grades', () => {22    expect(parseGradeFromTitle('1999 Pokemon Base Charizard 1st PSA 10')).toMatchObject({ grader: 'psa', grade: '10' });23    expect(parseGradeFromTitle('Charizard BGS 9.5 Black Label')).toMatchObject({ grader: 'bgs', grade: '9.5', qualifier: 'Black Label' });24    expect(parseGradeFromTitle('Amazing Fantasy 15 CGC 3.0')).toMatchObject({ grader: 'cgc', grade: '3.0' });25    expect(parseGradeFromTitle('Super Mario 64 WATA 9.8 A++')).toMatchObject({ grader: 'wata', grade: '9.8' });26    expect(parseGradeFromTitle('Rolex Daytona 116500LN')).toMatchObject({ grader: null, grade: null });27    expect(parseGradeFromTitle('1952 Topps Mantle raw')).toMatchObject({ grader: 'raw' });28    // PSA/DNA autograph slabs and authentication-only slabs (COMC, mycomicshop titles)29    expect(parseGradeFromTitle('1986-87 Fleer - [Base] #128 Al Wood [PSA/DNA 3 VG]')).toMatchObject({ grader: 'psa', grade: '3' });30    expect(parseGradeFromTitle('1986-87 Fleer - [Base] #33 Vern Fleming [PSA/DNA 8 NM-MT]')).toMatchObject({ grader: 'psa', grade: '8' });31    expect(parseGradeFromTitle('1989 Upper Deck - Blank Back #535 Danny Cox [SGC Authentic]')).toMatchObject({ grader: 'sgc', grade: 'authentic' });32    expect(parseGradeFromTitle('Brad Davis [PSA/DNA Certified Authentic Card & Auto]')).toMatchObject({ grader: 'psa', grade: 'authentic' });33    expect(parseGradeFromTitle('Charizard PSA 2021 release')).toMatchObject({ grader: 'psa', grade: null }); // a year is not a grade34    expect(parseGradeFromTitle('Batman #1 CGC (8.5) white pages')).toMatchObject({ grader: 'cgc', grade: '8.5' });35    // descriptive grade words between grader and number (Goldin, SCP, PriceCharting titles)36    expect(parseGradeFromTitle('1973 Topps Test Pin-Ups Hank Aaron - PSA EX-MT 6')).toMatchObject({ grader: 'psa', grade: '6' });37    expect(parseGradeFromTitle('2022 Panini Donruss #374 Brock Purdy Rookie Card - SGC MINT+ 9.5')).toMatchObject({ grader: 'sgc', grade: '9.5' });38    expect(parseGradeFromTitle('The Amazing Spider-Man #26 (Marvel, 1965) CGC VG+ 4.5 Cream pages')).toMatchObject({ grader: 'cgc', grade: '4.5' });39    expect(parseGradeFromTitle('The Incredible Hulk #318 CGC NM/MT 9.8 White pages')).toMatchObject({ grader: 'cgc', grade: '9.8' });40    expect(parseGradeFromTitle('X-Men #2 (Marvel, 1963) CGC FN+ 6.5')).toMatchObject({ grader: 'cgc', grade: '6.5' });41    expect(parseGradeFromTitle('Amazing Spider-Man #11 CGC 2.0 1964 Marvel')).toMatchObject({ grader: 'cgc', grade: '2.0' });42  });43  it('keeps slabs with an unreadable grade out of the raw variant', () => {44    expect(variantKey({ grader: 'psa', grade: null })).toEqual({ key: 'psa|unknown', label: 'PSA · grade unknown' });45    expect(variantKey({ grader: 'sgc', grade: 'authentic' })).toEqual({ key: 'sgc|authentic', label: 'SGC Authentic' });46    expect(variantKey({ grader: 'raw', grade: null }).key).toBe('raw');47  });48  it('builds variant keys', () => {49    expect(variantKey({ grader: 'psa', grade: '10' })).toEqual({ key: 'psa|10', label: 'PSA 10' });50    expect(variantKey({ completeness: 'sealed' })).toEqual({ key: 'raw|sealed', label: 'Sealed' });51    expect(variantKey({ size: '10' }).key).toBe('raw|size_10');52    expect(indexForCategory('rolex')?.ticker).toBe('RARE-WATCH');53  });54});5556describe('parseGradeFromTitle ambiguity', () => {57  it('does not mistake Tag Team for the TAG grader', () => {58    expect(parseGradeFromTitle('2019 Pokemon Tag Team GX Pikachu & Zekrom PSA GEM MT 10')).toMatchObject({ grader: 'psa', grade: '10' });59    expect(parseGradeFromTitle('Pokemon Tag Team Pikachu raw')).toMatchObject({ grader: 'raw' });60    expect(parseGradeFromTitle('Charizard TAG 10')).toMatchObject({ grader: 'tag', grade: '10' });61  });62});63