import { describe, expect, it } from 'vitest'; import { getConnectorMeta } from '@rareindex/connectors'; import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; import createConnector, { parseSetMarkdown } from './index.js'; const connector = createConnector(getConnectorMeta('brickeconomy')); describe('brickeconomy', () => { runFixtureSuite(connector, it, expect); it('maps a retired set to catalog + new/used guide values', async () => { const fx = loadFixture('brickeconomy', '10179-1__lego-star-wars-ultimate-collectors-millennium-falcon'); const out = await connector.normalize(fx.raw); const cat = out.find((r) => r.kind === 'catalog_item'); if (cat?.kind !== 'catalog_item') throw new Error(); expect(cat.attributes.categorySlug).toBe('lego_sets'); expect(cat.attributes.number).toBe('10179'); expect(cat.attributes.identifiers.lego_set_number).toBe('10179'); expect(cat.attributes.franchise).toBe('Star Wars'); expect(cat.attributes.year).toBe(2007); expect(cat.attributes.originalMsrp).toBe(499.99); expect(cat.attributes.originalMsrpCurrency).toBe('USD'); const sealed = out.find((r) => r.kind === 'price_observation' && r.condition.completeness === 'sealed'); const used = out.find((r) => r.kind === 'price_observation' && r.condition.completeness === 'used_complete' && r.priceKind === 'guide_value'); if (sealed?.kind !== 'price_observation' || used?.kind !== 'price_observation') throw new Error(); expect(sealed.price).toBeGreaterThan(used.price); expect(sealed.currency).toBe('USD'); }); it('parses the pricing markdown', () => { 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`; 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 }); 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`; expect(parseSetMarkdown(available)).toMatchObject({ setNumber: '75192-1', retailPrice: 849.99, newValue: 764.15, usedValue: null }); }); });