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%
1.9 KB · 38 lines typescript
Raw Blame History
1import { describe, expect, it } from 'vitest';2import { ConnectorMetaSchema } from '@rareindex/connectors';3import metaJson from './meta.json' with { type: 'json' };4import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';5import createConnector, { cleanName, preownedCondition, releaseYear } from './index.js';67const connector = createConnector(ConnectorMetaSchema.parse(metaJson));89describe('amiami', () => {10  runFixtureSuite(connector, it, expect);1112  it('emits catalog + JPY listings with JAN and maker', async () => {13    const fx = loadFixture('amiami', 'figures-preowned-p1');14    const out = await connector.normalize(fx.raw);15    const cats = out.filter((r) => r.kind === 'catalog_item');16    const lst = out.filter((r) => r.kind === 'listing');17    expect(cats.length).toBeGreaterThan(0);18    expect(lst.length).toBeGreaterThan(0);19    const l = lst[0]!;20    if (l.kind !== 'listing') throw new Error();21    expect(l.currency).toBe('JPY');22    expect(l.price).toBeGreaterThan(0);23    expect(l.attributes.categorySlug).toBe('action_figures');24    expect(l.attributes.identifiers.amiami_gcode).toBeTruthy();25    expect(l.sourceUrl).toContain('amiami.com/eng/detail/?gcode=');26    expect(cats.some((c) => c.kind === 'catalog_item' && c.attributes.identifiers.jan)).toBe(true);27  });2829  it('helpers', () => {30    expect(cleanName('[AmiAmi Exclusive Bonus] Azur Lane Glorious 1/7 Complete Figure')).toEqual({ name: 'Azur Lane Glorious 1/7 Complete Figure', bonus: true, scale: '1/7' });31    expect(preownedCondition({ gcode: 'X', gname: '(Pre-owned ITEM:A/BOX:B) Foo', condition_flg: 1 })).toEqual({ condition: 'near_mint_box', raw: 'Pre-owned ITEM:A/BOX:B' });32    expect(preownedCondition({ gcode: 'X', gname: 'Foo', condition_flg: 0 }).condition).toBe('mint_in_box');33    expect(releaseYear('2026-04-30 00:00:00')).toBe(2026);34    expect(releaseYear('Apr-2026')).toBe(2026);35    expect(releaseYear(null)).toBeNull();36  });37});38