TypeScript 61.9%
HTML 37.2%
SQL 0.7%
1import { describe, expect, it } from 'vitest';2import { getConnectorMeta } from '@rareindex/connectors';3import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';4import createConnector, { parseComicTitle, parseGradeLine, parseSoldPage } from './index.js';56const connector = createConnector(getConnectorMeta('comicconnect'));78describe('comicconnect', () => {9 runFixtureSuite(connector, it, expect);1011 it('parses titles and grade lines', () => {12 expect(parseComicTitle('X-MEN (1963-2011) #282')).toEqual({ series: 'X-Men', seriesYears: '1963-2011', issue: '282', year: null, groupLot: false });13 expect(parseComicTitle('AMAZING SPIDER-MAN (1963) #300')).toMatchObject({ series: 'Amazing Spider-Man', issue: '300', year: 1963 });14 expect(parseComicTitle('X-MEN GROUP LOT #1 Comic Book Group Lot').groupLot).toBe(true);15 expect(parseGradeLine('Marvel CGC NM/M: 9.8')).toEqual({ publisher: 'Marvel', grader: 'cgc', grade: '9.8', label: 'NM/M' });16 expect(parseGradeLine('Marvel NM: 9.4')).toEqual({ publisher: 'Marvel', grader: 'raw', grade: '9.4', label: 'NM' });17 expect(parseGradeLine('DC CGC NM: 9.4')).toEqual({ publisher: 'DC', grader: 'cgc', grade: '9.4', label: 'NM' });18 expect(parseGradeLine('DC VF-: 7.5')).toEqual({ publisher: 'DC', grader: 'raw', grade: '7.5', label: 'VF-' });19 expect(parseGradeLine('Robin Snyder/Steve Ditko VF: 8.0')).toMatchObject({ publisher: 'Robin Snyder/Steve Ditko', grader: 'raw', grade: '8.0' });20 });2122 it('maps sold cards to sales with grader, publisher and hammer price', async () => {23 const fx = loadFixture('comicconnect', 'sold-comics-page-1');24 const out = await connector.normalize(fx.raw);25 expect(out.length).toBe(20);26 const graded = out.find((r) => r.kind === 'sale' && r.grade.grader === 'cgc');27 if (graded?.kind !== 'sale') throw new Error('expected a CGC sale');28 expect(graded.attributes.categorySlug).toMatch(/_comics$/);29 expect(graded.attributes.brand).toBeTruthy();30 expect(graded.attributes.number).toMatch(/^\d/);31 expect(graded.currency).toBe('USD');32 expect(graded.buyerPremiumIncluded).toBe(false);33 expect(graded.auctionHouse).toBe('ComicConnect');34 expect(graded.saleDate.getUTCFullYear()).toBeGreaterThanOrEqual(2020);35 const marvel = out.filter((r) => r.kind === 'sale' && r.attributes.categorySlug === 'marvel_comics');36 expect(marvel.length).toBeGreaterThan(0);37 });3839 it('parses the browse page HTML', () => {40 const html = `<div class="table_info">479,121 Results</div>41 <div class="itempreview details listingbox" data-type="auction" bp="true"><div class="mainimg"><a href="/item/1"><img src="/coverimages/gallery425/a.jpg"></a></div>42 <a href="/item/1"><div class="titleline ">BATMAN (1940-2011) #1</div></a><div class="grade">DC CGC VG: 4.0</div>43 <div class="comments wrap"><b>A 15% BUYER'S PREMIUM</b><br>off-white pages<div class="ctip">dup</div></div>44 <div class="endednotice">Sold on Monday, 06/24/2024 11:46 PM</div><div class="pricing"><span class="lbl">Sold For</span><span class="val prc">$402,500.00</span><span class="reserve">(No Reserve)</span></div></div>`;45 const p = parseSoldPage(html, 'https://www.comicconnect.com/browse/comics/?filtertype=Sold&page=1', 1);46 expect(p.totalResults).toBe(479121);47 expect(p.cards).toEqual([48 { 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' },49 ]);50 });51});52