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%
3.6 KB · 52 lines typescript
Raw Blame History
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