TypeScript 61.9%
HTML 37.2%
SQL 0.7%
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, { parseMaPrice } from './index.js';67const connector = createConnector(ConnectorMetaSchema.parse(metaJson));89describe('ma-shops', () => {10 runFixtureSuite(connector, it, expect);1112 it('emits dealer asks with the displayed currency and parsed grades', async () => {13 const fx = loadFixture('ma-shops', 'denarius-search-p1');14 const out = await connector.normalize(fx.raw);15 expect(out.length).toBeGreaterThanOrEqual(8);16 for (const l of out) {17 if (l.kind !== 'listing') throw new Error('expected listing');18 expect(l.attributes.categorySlug).toBe('coins');19 expect(l.attributes.identifiers.ma_shops_item).toMatch(/^[a-z0-9_-]+\/\d+$/i);20 expect(['CAD', 'USD', 'EUR', 'GBP', 'CHF']).toContain(l.currency);21 expect(l.price).toBeGreaterThan(0);22 expect(l.seller).toBeTruthy();23 expect(l.sourceUrl).toMatch(/ma-shops\.com\/[a-z0-9_-]+\/item\.php\?id=\d+/i);24 }25 expect(out.some((l) => l.kind === 'listing' && l.grade.grader === 'pcgs')).toBe(true);26 });2728 it('parses displayed prices', () => {29 expect(parseMaPrice('642.98 CAN$')).toEqual({ price: 642.98, currency: 'CAD' });30 expect(parseMaPrice('1,250.00 US$')).toEqual({ price: 1250, currency: 'USD' });31 expect(parseMaPrice('89.00 EUR')).toEqual({ price: 89, currency: 'EUR' });32 expect(parseMaPrice(null)).toEqual({ price: null, currency: null });33 });34});35