import { describe, expect, it } from 'vitest'; import { getConnectorMeta } from '@rareindex/connectors'; import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; import createConnector, { parseCurrentValue, parseLaunchExit, parseRrp, setLinks } from './index.js'; const connector = createConnector(getConnectorMeta('brickset')); describe('brickset', () => { runFixtureSuite(connector, it, expect); it('maps 10179 to catalog + new/used guide values with barcodes', async () => { const fx = loadFixture('brickset', '10179-1-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.identifiers.lego_set_number).toBe('10179'); expect(cat.attributes.identifiers.upc).toBe('673419079419'); expect(cat.attributes.franchise).toBe('Star Wars'); expect(cat.attributes.originalMsrp).toBe(499.99); expect(cat.attributes.originalMsrpCurrency).toBe('USD'); expect(cat.attributes.metadata.pieces).toBe(5197); expect(cat.attributes.metadata.retired).toBe(true); 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'); if (sealed?.kind !== 'price_observation' || used?.kind !== 'price_observation') throw new Error(); expect(sealed.price).toBeGreaterThan(used.price); expect(sealed.priceKind).toBe('guide_value'); expect(sealed.currency).toBe('USD'); }); it('helpers', () => { expect(parseRrp('£342.49, $499.99')).toEqual({ gbp: 342.49, usd: 499.99, eur: null }); expect(parseCurrentValue('New: ~$2858 | Used: ~$1172')).toEqual({ newUsd: 2858, usedUsd: 1172 }); expect(parseCurrentValue(undefined)).toEqual({ newUsd: null, usedUsd: null }); const le = parseLaunchExit('01 Oct 07 - 31 Dec 09'); expect(le.launch?.toISOString().slice(0, 10)).toBe('2007-10-01'); expect(le.exit?.toISOString().slice(0, 10)).toBe('2009-12-31'); expect(setLinks('xyz')).toEqual(['https://brickset.com/sets/10179-1/Millennium-Falcon']); }); });