import { describe, expect, it } from 'vitest'; import { qualityScore, documentQuality } from './quality.js'; import { healthFromRuns } from './health.js'; import { childLogger } from '@rareindex/shared'; import type { ConnectorMeta } from './types.js'; const meta = { id: 'x', schemaVersion: '1.0' } as unknown as ConnectorMeta; describe('quality', () => { it('scores expected fields', () => { expect(qualityScore({ title: 'a', price: 1, status: 'sold', date: new Date(), images: ['u'], description: 'd', identifiers: { a: 'b' }, category: 'c', currency: 'USD' })).toBe(1); expect(qualityScore({ title: 'a' }, ['title', 'price'])).toBe(0.5); expect(qualityScore(null)).toBe(0); }); it('flags blocked documents', () => { expect(documentQuality({ html: 'Just a moment... Cloudflare', httpStatus: 200 })).toBeLessThan(0.5); expect(documentQuality({ html: 'x'.repeat(5000), httpStatus: 200 })).toBeGreaterThanOrEqual(0.8); expect(documentQuality({ html: 'x'.repeat(5000), httpStatus: 403 })).toBe(0); }); it('derives health', () => { const h = healthFromRuns( { meta, log: childLogger({}), fetch: async () => ({}) as never, recentRuns: [{ startedAt: new Date(), status: 'success', pagesAttempted: 100, pagesSuccess: 98, recordsRaw: 500, recordsDuplicate: 20, engineStats: { firecrawl: { attempts: 100, success: 91, credits: 100, ms: 1 }, scrapfly: { attempts: 7, success: 7, credits: 7, ms: 1 } }, anomalies: [], error: null }], }, '1.0', ); expect(h.status).toBe('healthy'); expect(h.success_rate_24h).toBe(0.98); expect(h.scrapfly_fallback_rate).toBe(0.07); }); });