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%
2.4 KB · 42 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, { 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