SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
11 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
2.7 KB · 37 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, { parseSetMarkdown } from './index.js';56const connector = createConnector(getConnectorMeta('brickeconomy'));78describe('brickeconomy', () => {9  runFixtureSuite(connector, it, expect);1011  it('maps a retired set to catalog + new/used guide values', async () => {12    const fx = loadFixture('brickeconomy', '10179-1__lego-star-wars-ultimate-collectors-millennium-falcon');13    const out = await connector.normalize(fx.raw);14    const cat = out.find((r) => r.kind === 'catalog_item');15    if (cat?.kind !== 'catalog_item') throw new Error();16    expect(cat.attributes.categorySlug).toBe('lego_sets');17    expect(cat.attributes.number).toBe('10179');18    expect(cat.attributes.identifiers.lego_set_number).toBe('10179');19    expect(cat.attributes.franchise).toBe('Star Wars');20    expect(cat.attributes.year).toBe(2007);21    expect(cat.attributes.originalMsrp).toBe(499.99);22    expect(cat.attributes.originalMsrpCurrency).toBe('USD');23    const sealed = out.find((r) => r.kind === 'price_observation' && r.condition.completeness === 'sealed');24    const used = out.find((r) => r.kind === 'price_observation' && r.condition.completeness === 'used_complete' && r.priceKind === 'guide_value');25    if (sealed?.kind !== 'price_observation' || used?.kind !== 'price_observation') throw new Error();26    expect(sealed.price).toBeGreaterThan(used.price);27    expect(sealed.currency).toBe('USD');28  });2930  it('parses the pricing markdown', () => {31    const md = `#### Set Details\n\nSet number\n\n10179-1\n\nName\n\nUltimate Collector's Millennium Falcon\n\nTheme\n\n[Star Wars](https://x)\n\nSubtheme\n\n[Ultimate Collector Series](https://x)\n\nYear\n\n[2007](https://x)\n\nReleased\n\nOctober 1, 2007\n\nPieces\n\n5,195\n\n#### Set Pricing\n\nRetail price\n\n$499.99\n\nNew/Sealed\n\nValue\n\n**$2,946.69**\n\nGrowth\n\n+489.35%\n\nUsed\n\nValue\n\n$1,087.86\n\nRange\n\n$1,005.38 - $1,335.67\n`;32    expect(parseSetMarkdown(md)).toMatchObject({ setNumber: '10179-1', name: "Ultimate Collector's Millennium Falcon", theme: 'Star Wars', subtheme: 'Ultimate Collector Series', year: 2007, pieces: 5195, retailPrice: 499.99, newValue: 2946.69, usedValue: 1087.86, usedRangeLow: 1005.38, usedRangeHigh: 1335.67, growthPct: 489.35 });33    const available = `#### Set Details\n\nSet number\n\n75192-1\n\nName\n\nMillennium Falcon\n\nYear\n\n[2017](x)\n\n#### Set Pricing\n\nRetail price\n\n$849.99\n\nMarket price\n\n$764.15-10.1%\n\nStill available at retail\n`;34    expect(parseSetMarkdown(available)).toMatchObject({ setNumber: '75192-1', retailPrice: 849.99, newValue: 764.15, usedValue: null });35  });36});37