TypeScript 61.9%
HTML 37.2%
SQL 0.7%
1import { describe, expect, it } from 'vitest';2import { ConnectorMetaSchema } from '@rareindex/connectors';3import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';4import metaJson from './meta.json' with { type: 'json' };5import createConnector, { parseCategoryPage, parseItemPage, wineFacts } from './index.js';67const connector = createConnector(ConnectorMetaSchema.parse(metaJson));89describe('winebid', () => {10 runFixtureSuite(connector, it, expect);1112 it('emits per-bottle USD sales (premium excluded) dated by the recent-sales table', async () => {13 const name = listFixtures('winebid')[0]!;14 const out = await connector.normalize(loadFixture('winebid', name).raw);15 const sales = out.filter((r) => r.kind === 'sale');16 expect(sales.length).toBeGreaterThan(0);17 for (const r of sales) {18 if (r.kind !== 'sale') continue;19 expect(r.currency).toBe('USD');20 expect(r.buyerPremiumIncluded).toBe(false);21 expect(r.attributes.metadata.buyer_premium_pct).toBe(17);22 expect(r.saleDate.getFullYear()).toBeGreaterThanOrEqual(2015);23 expect(r.sourceUrl).toMatch(/^https:\/\/www\.winebid\.com\/BuyWine\/Item\/\d+/);24 }25 });2627 it('parses item pages, category links and titles', () => {28 const html = `<h1>1983 Château Margaux (1.5L)</h1><p>Light capsule condition issue</p><div id="itemDiagnostics" data-is-ended="False"></div><table class="recentSales"><thead><tr><th>Item</th><th>Sold</th><th>Amount</th><th>Date</th></tr></thead><tr><td><a href="/BuyWine/Item/10856401/1983-Chateau-Margaux">I10856401</a></td><td class="text-right">2</td><td class="text-right">$520</td><td class="text-right" title="August 23, 2026 12:00:00 AM (PDT)">Aug 23, 2026</td></tr></table>`;29 const p = parseItemPage(html, 'https://www.winebid.com/BuyWine/Item/10881873/1983-Chateau-Margaux', 'Bordeaux')!;30 expect(p.itemId).toBe('10881873');31 expect(p.title).toBe('1983 Château Margaux (1.5L)');32 expect(p.recentSales).toEqual([{ itemId: '10856401', url: 'https://www.winebid.com/BuyWine/Item/10856401/1983-Chateau-Margaux', quantity: 2, amountUsd: 520, soldOn: 'August 23, 2026 12:00:00 AM (PDT)' }]);33 expect(wineFacts('1983 Château Margaux (1.5L)')).toEqual({ vintage: 1983, name: 'Château Margaux', size: '1.5L' });34 expect(wineFacts('2019 Opus One')).toEqual({ vintage: 2019, name: 'Opus One', size: '750ml' });35 expect(parseCategoryPage('[x](https://www.winebid.com/BuyWine/Item/10887720/2019-Chateau-Haut-Brion-~) <a href="/BuyWine/Item/1/a">a</a>')).toEqual(['https://www.winebid.com/BuyWine/Item/10887720/2019-Chateau-Haut-Brion-~', 'https://www.winebid.com/BuyWine/Item/1/a']);36 });37});38