WIP main worktree changes before merge

This commit is contained in:
2026-03-13 00:20:22 -04:00
parent 58bf80189d
commit e5141238fb
25 changed files with 940 additions and 208 deletions

View File

@@ -210,4 +210,86 @@ describe('statement view model', () => {
row: { key: 'gp_unmapped', residualFlag: true }
});
});
it('renders unmapped detail rows in a dedicated residual section and counts them', () => {
const model = buildStatementTree({
surfaceKind: 'income_statement',
rows: [
createSurfaceRow({ key: 'revenue', label: 'Revenue', category: 'revenue', values: { p1: 100 } })
],
statementDetails: {
unmapped: [
createDetailRow({
key: 'unmapped_other_income',
label: 'Other income residual',
parentSurfaceKey: 'unmapped',
values: { p1: 5 },
residualFlag: true
})
]
},
categories: [],
searchQuery: '',
expandedRowKeys: new Set()
});
expect(model.sections).toHaveLength(2);
expect(model.sections[1]).toMatchObject({
key: 'unmapped_residual',
label: 'Unmapped / Residual'
});
expect(model.sections[1]?.nodes[0]).toMatchObject({
kind: 'detail',
row: { key: 'unmapped_other_income', parentSurfaceKey: 'unmapped' }
});
expect(model.visibleNodeCount).toBe(2);
expect(model.totalNodeCount).toBe(2);
});
it('matches search and resolves selection for unmapped detail rows without a real parent surface', () => {
const rows = [
createSurfaceRow({ key: 'revenue', label: 'Revenue', category: 'revenue', values: { p1: 100 } })
];
const statementDetails = {
unmapped: [
createDetailRow({
key: 'unmapped_fx_gain',
label: 'FX gain residual',
parentSurfaceKey: 'unmapped',
values: { p1: 2 },
residualFlag: true
})
]
};
const model = buildStatementTree({
surfaceKind: 'income_statement',
rows,
statementDetails,
categories: [],
searchQuery: 'fx gain',
expandedRowKeys: new Set()
});
expect(model.sections).toHaveLength(1);
expect(model.sections[0]).toMatchObject({
key: 'unmapped_residual',
label: 'Unmapped / Residual'
});
expect(model.visibleNodeCount).toBe(1);
expect(model.totalNodeCount).toBe(2);
const selection = resolveStatementSelection({
surfaceKind: 'income_statement',
rows,
statementDetails,
selection: { kind: 'detail', key: 'unmapped_fx_gain', parentKey: 'unmapped' }
});
expect(selection).toMatchObject({
kind: 'detail',
row: { key: 'unmapped_fx_gain', parentSurfaceKey: 'unmapped' },
parentSurfaceRow: null
});
});
});