Run playwright UI tests
This commit is contained in:
60
lib/server/taxonomy/xbrl-parser.test.ts
Normal file
60
lib/server/taxonomy/xbrl-parser.test.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import { describe, expect, it } from 'bun:test';
|
||||
import { parseXbrlInstance } from '@/lib/server/taxonomy/xbrl-parser';
|
||||
|
||||
const SAMPLE_XBRL = `
|
||||
<xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance"
|
||||
xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
|
||||
xmlns:us-gaap="http://fasb.org/us-gaap/2024"
|
||||
xmlns:dei="http://xbrl.sec.gov/dei/2024">
|
||||
<xbrli:context id="c1">
|
||||
<xbrli:period>
|
||||
<xbrli:startDate>2025-01-01</xbrli:startDate>
|
||||
<xbrli:endDate>2025-12-31</xbrli:endDate>
|
||||
</xbrli:period>
|
||||
</xbrli:context>
|
||||
<xbrli:context id="c2">
|
||||
<xbrli:entity>
|
||||
<xbrli:segment>
|
||||
<xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">us-gaap:ConsolidatedGroupMember</xbrldi:explicitMember>
|
||||
</xbrli:segment>
|
||||
</xbrli:entity>
|
||||
<xbrli:period>
|
||||
<xbrli:instant>2025-12-31</xbrli:instant>
|
||||
</xbrli:period>
|
||||
</xbrli:context>
|
||||
<xbrli:unit id="u1">
|
||||
<xbrli:measure>iso4217:USD</xbrli:measure>
|
||||
</xbrli:unit>
|
||||
<us-gaap:Revenues contextRef="c1" unitRef="u1" decimals="-6">1,234</us-gaap:Revenues>
|
||||
<us-gaap:Assets contextRef="c2" unitRef="u1" decimals="-6">5,678</us-gaap:Assets>
|
||||
<dei:EntityRegistrantName contextRef="c1">Acme Corp</dei:EntityRegistrantName>
|
||||
</xbrli:xbrl>
|
||||
`;
|
||||
|
||||
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'
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user