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, { parseCurrentValue, parseLaunchExit, parseRrp, setLinks } from './index.js';56const connector = createConnector(getConnectorMeta('brickset'));78describe('brickset', () => {9 runFixtureSuite(connector, it, expect);1011 it('maps 10179 to catalog + new/used guide values with barcodes', async () => {12 const fx = loadFixture('brickset', '10179-1-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.identifiers.lego_set_number).toBe('10179');18 expect(cat.attributes.identifiers.upc).toBe('673419079419');19 expect(cat.attributes.franchise).toBe('Star Wars');20 expect(cat.attributes.originalMsrp).toBe(499.99);21 expect(cat.attributes.originalMsrpCurrency).toBe('USD');22 expect(cat.attributes.metadata.pieces).toBe(5197);23 expect(cat.attributes.metadata.retired).toBe(true);24 const sealed = out.find((r) => r.kind === 'price_observation' && r.condition.completeness === 'sealed');25 const used = out.find((r) => r.kind === 'price_observation' && r.condition.completeness === 'used_complete');26 if (sealed?.kind !== 'price_observation' || used?.kind !== 'price_observation') throw new Error();27 expect(sealed.price).toBeGreaterThan(used.price);28 expect(sealed.priceKind).toBe('guide_value');29 expect(sealed.currency).toBe('USD');30 });3132 it('helpers', () => {33 expect(parseRrp('£342.49, $499.99')).toEqual({ gbp: 342.49, usd: 499.99, eur: null });34 expect(parseCurrentValue('New: ~$2858 | Used: ~$1172')).toEqual({ newUsd: 2858, usedUsd: 1172 });35 expect(parseCurrentValue(undefined)).toEqual({ newUsd: null, usedUsd: null });36 const le = parseLaunchExit('01 Oct 07 - 31 Dec 09');37 expect(le.launch?.toISOString().slice(0, 10)).toBe('2007-10-01');38 expect(le.exit?.toISOString().slice(0, 10)).toBe('2009-12-31');39 expect(setLinks('<a href="/sets/10179-1/Millennium-Falcon">x</a><a href="/sets/10179-1/Millennium-Falcon#tab">y</a><a href="/sets/theme-Icons">z</a>')).toEqual(['https://brickset.com/sets/10179-1/Millennium-Falcon']);40 });41});42