import { describe, expect, it } from 'vitest'; import { getConnectorMeta } from '@rareindex/connectors'; import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; import createConnector, { parseComicTitle, parseGradeLine, parseSoldPage } from './index.js'; const connector = createConnector(getConnectorMeta('comicconnect')); describe('comicconnect', () => { runFixtureSuite(connector, it, expect); it('parses titles and grade lines', () => { expect(parseComicTitle('X-MEN (1963-2011) #282')).toEqual({ series: 'X-Men', seriesYears: '1963-2011', issue: '282', year: null, groupLot: false }); expect(parseComicTitle('AMAZING SPIDER-MAN (1963) #300')).toMatchObject({ series: 'Amazing Spider-Man', issue: '300', year: 1963 }); expect(parseComicTitle('X-MEN GROUP LOT #1 Comic Book Group Lot').groupLot).toBe(true); expect(parseGradeLine('Marvel CGC NM/M: 9.8')).toEqual({ publisher: 'Marvel', grader: 'cgc', grade: '9.8', label: 'NM/M' }); expect(parseGradeLine('Marvel NM: 9.4')).toEqual({ publisher: 'Marvel', grader: 'raw', grade: '9.4', label: 'NM' }); expect(parseGradeLine('DC CGC NM: 9.4')).toEqual({ publisher: 'DC', grader: 'cgc', grade: '9.4', label: 'NM' }); expect(parseGradeLine('DC VF-: 7.5')).toEqual({ publisher: 'DC', grader: 'raw', grade: '7.5', label: 'VF-' }); expect(parseGradeLine('Robin Snyder/Steve Ditko VF: 8.0')).toMatchObject({ publisher: 'Robin Snyder/Steve Ditko', grader: 'raw', grade: '8.0' }); }); it('maps sold cards to sales with grader, publisher and hammer price', async () => { const fx = loadFixture('comicconnect', 'sold-comics-page-1'); const out = await connector.normalize(fx.raw); expect(out.length).toBe(20); const graded = out.find((r) => r.kind === 'sale' && r.grade.grader === 'cgc'); if (graded?.kind !== 'sale') throw new Error('expected a CGC sale'); expect(graded.attributes.categorySlug).toMatch(/_comics$/); expect(graded.attributes.brand).toBeTruthy(); expect(graded.attributes.number).toMatch(/^\d/); expect(graded.currency).toBe('USD'); expect(graded.buyerPremiumIncluded).toBe(false); expect(graded.auctionHouse).toBe('ComicConnect'); expect(graded.saleDate.getUTCFullYear()).toBeGreaterThanOrEqual(2020); const marvel = out.filter((r) => r.kind === 'sale' && r.attributes.categorySlug === 'marvel_comics'); expect(marvel.length).toBeGreaterThan(0); }); it('parses the browse page HTML', () => { const html = `
479,121 Results
BATMAN (1940-2011) #1
DC CGC VG: 4.0
A 15% BUYER'S PREMIUM
off-white pages
dup
Sold on Monday, 06/24/2024 11:46 PM
Sold For$402,500.00(No Reserve)
`; const p = parseSoldPage(html, 'https://www.comicconnect.com/browse/comics/?filtertype=Sold&page=1', 1); expect(p.totalResults).toBe(479121); expect(p.cards).toEqual([ { itemId: '1', url: 'https://www.comicconnect.com/item/1', title: 'BATMAN (1940-2011) #1', gradeLine: 'DC CGC VG: 4.0', soldOn: 'Monday, 06/24/2024 11:46 PM', soldFor: 402500, saleType: 'auction', buyersPremium: true, noReserve: true, comments: 'off-white pages', image: 'https://www.comicconnect.com/coverimages/gallery425/a.jpg' }, ]); }); });