import { describe, expect, it } from 'bun:test'; import { parseXbrlInstance } from '@/lib/server/taxonomy/xbrl-parser'; const SAMPLE_XBRL = ` 2025-01-01 2025-12-31 us-gaap:ConsolidatedGroupMember 2025-12-31 iso4217:USD 1,234 5,678 Acme Corp `; describe('xbrl instance parser', () => { it('parses contexts, units, numeric facts, dimensions, and concept keys', () => { const parsed = parseXbrlInstance(SAMPLE_XBRL, 'abc_htm.xml'); expect(parsed.contexts.c1?.periodStart).toBe('2025-01-01'); expect(parsed.contexts.c1?.periodEnd).toBe('2025-12-31'); expect(parsed.contexts.c2?.periodInstant).toBe('2025-12-31'); expect(parsed.contexts.c2?.dimensions.length).toBe(1); expect(parsed.units.u1?.measure).toBe('iso4217:USD'); expect(parsed.facts.length).toBe(2); const revenueFact = parsed.facts.find((fact) => fact.localName === 'Revenues'); const assetsFact = parsed.facts.find((fact) => fact.localName === 'Assets'); expect(revenueFact?.conceptKey).toBe('http://fasb.org/us-gaap/2024#Revenues'); expect(revenueFact?.isDimensionless).toBe(true); expect(revenueFact?.value).toBe(1234); expect(revenueFact?.sourceFile).toBe('abc_htm.xml'); expect(assetsFact?.conceptKey).toBe('http://fasb.org/us-gaap/2024#Assets'); expect(assetsFact?.isDimensionless).toBe(false); expect(assetsFact?.dimensions[0]).toEqual({ axis: 'us-gaap:StatementBusinessSegmentsAxis', member: 'us-gaap:ConsolidatedGroupMember' }); }); });