fix(investments): align roles and date contracts
Backend security / security (push) Successful in 9s
Backend verify / verify (push) Successful in 10m23s
Backend security / security (pull_request) Successful in 8s
Backend verify / verify (pull_request) Successful in 10m39s
Conventional commits / commits (pull_request) Successful in 29s

Identify income dependencies by role and document screen-specific dates.
Convert inclusive calendar days into half-open source ranges while
preserving operation timestamps and existing stored coverage.
This commit is contained in:
2026-09-27 11:38:13 +03:00
parent e4232138d0
commit 516e43203e
18 changed files with 500 additions and 74 deletions
+13 -4
View File
@@ -138,7 +138,15 @@ describe('local income completeness and exact money (SQLite)', () => {
).toEqual(['a', 'b']);
expect(result.data.previous).toBeNull();
expect(result.data.yearComparison).toBeNull();
expect(result.meta.dependencies?.[1].availability).toBe('missing');
expect(result.meta.dependencies.map(({ role }) => role)).toEqual([
'selected',
'previous',
'year',
]);
expect(
result.meta.dependencies.find(({ role }) => role === 'previous')
?.availability,
).toBe('missing');
expect(result.data.calculatedAt).toBe('2025-02-01T00:00:00.000Z');
await prisma.$disconnect();
}
@@ -264,9 +272,10 @@ describe('local income completeness and exact money (SQLite)', () => {
});
it('distinguishes unavailable calendar comparison without scheduling it', async () => {
const result = await read('a', 'from=2024-02-29&to=2024-02-29');
expect(result.meta.dependencies?.at(-1)?.unavailableReason).toBe(
'CALENDAR_OR_ACCOUNT_HISTORY',
);
expect(
result.meta.dependencies.find(({ role }) => role === 'year')
?.unavailableReason,
).toBe('CALENDAR_OR_ACCOUNT_HISTORY');
expect(upstream.getOperationsByCursor).not.toHaveBeenCalled();
});
});