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.1 KB · 46 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, { splitMasterTitle, variantFromFormat, yearFromReleased } from './index.js';56const connector = createConnector(getConnectorMeta('discogs'));78describe('discogs', () => {9  runFixtureSuite(connector, it, expect);1011  it('maps versions to music catalog items with deterministic identifiers', async () => {12    const fx = loadFixture('discogs', 'nevermind-versions');13    const out = await connector.normalize(fx.raw);14    expect(out.length).toBeGreaterThan(5);15    for (const r of out) {16      if (r.kind !== 'catalog_item') throw new Error('expected catalog_item');17      expect(r.attributes.categorySlug).toBe('music');18      expect(r.attributes.identifiers.discogs_release_id).toMatch(/^\d+$/);19      expect(r.attributes.identifiers.discogs_master_id).toBe('13814');20      expect(r.attributes.name).toBe('Nirvana – Nevermind');21      expect(r.sourceUrl).toMatch(/discogs\.com\/release\/\d+$/);22    }23  });2425  it('maps marketplace stats to a low observation with sample size', async () => {26    const fx = loadFixture('discogs', 'nevermind-release-stats');27    const out = await connector.normalize(fx.raw);28    const obs = out.find((r) => r.kind === 'price_observation');29    if (obs?.kind !== 'price_observation') throw new Error('expected observation');30    expect(obs.priceKind).toBe('low');31    expect(obs.price).toBeGreaterThan(0);32    expect(obs.currency).toBe('USD');33    expect(obs.sampleSize).toBeGreaterThan(0);34    expect(obs.confidence).toBeLessThanOrEqual(0.7);35  });3637  it('helpers', () => {38    expect(splitMasterTitle('Nirvana - Nevermind')).toEqual({ artist: 'Nirvana', title: 'Nevermind' });39    expect(splitMasterTitle('Homogenic')).toEqual({ artist: null, title: 'Homogenic' });40    expect(variantFromFormat('Album, Reissue, 180 Gram')).toBe('Reissue, 180 Gram');41    expect(variantFromFormat('Album, LP')).toBeNull();42    expect(yearFromReleased('1991-09-24')).toBe(1991);43    expect(yearFromReleased(null)).toBeNull();44  });45});46