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.3 KB · 39 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, { normaliseGradeText, parseJapaneseDate, parseSearchPage } from './index.js';56const connector = createConnector(getConnectorMeta('aucfree'));78describe('aucfree', () => {9  runFixtureSuite(connector, it, expect);1011  it('maps closed lots to JPY auction sales with parsed PSA grades', async () => {12    const fx = loadFixture('aucfree', 'pokemon-psa10-page1');13    const out = await connector.normalize(fx.raw);14    expect(out.length).toBeGreaterThanOrEqual(40);15    const graded = out.filter((r) => r.kind === 'sale' && r.grade.grader === 'psa' && r.grade.grade === '10');16    expect(graded.length).toBeGreaterThan(20);17    for (const r of out) {18      if (r.kind !== 'sale') throw new Error();19      expect(r.currency).toBe('JPY');20      expect(r.saleType).toBe('auction');21      expect(r.buyerPremiumIncluded).toBe(false);22      expect(r.attributes.categorySlug).toBe('pokemon');23      expect(r.attributes.language).toBe('Japanese');24      expect(r.sourceUrl).toMatch(/^https:\/\/aucfree\.com\/items\/[a-z0-9]+$/);25      expect(r.saleDate.getUTCHours()).toBe(0);26    }27  });2829  it('helpers', () => {30    expect(parseJapaneseDate('2026年9月6日')?.toISOString()).toBe('2026-09-06T00:00:00.000Z');31    expect(parseJapaneseDate('nope')).toBeNull();32    expect(normaliseGradeText('【PSA10】ポケモンカード')).toContain('PSA 10');33    expect(normaliseGradeText('BGS9.5 カード')).toContain('BGS 9.5');34    const html = `<table><tr class="results_bid"><td><a class="item_title" href="https://aucfree.com/items/x123">テスト カード PSA10</a><div class="results_bid-image"><img data-src="https://img.aucfree.com/x123.1.jpg"></div></td><td class="results-price"><a class="item_price">12,345円</a></td><td class="results-bid">3件</td><td class="results-limit">2026年9月1日</td></tr></table>`;35    const p = parseSearchPage(html, 'u', { q: 'q', category: 'pokemon', language: 'Japanese' }, 1);36    expect(p.rows).toEqual([{ id: 'x123', url: 'https://aucfree.com/items/x123', title: 'テスト カード PSA10', priceJpy: 12345, bids: 3, endedOn: '2026年9月1日', image: 'https://img.aucfree.com/x123.1.jpg' }]);37  });38});39