refactor: isolate operation ranges and intents
This commit is contained in:
@@ -115,6 +115,40 @@ describe('Request-driven operations synchronization (SQLite)', () => {
|
||||
});
|
||||
afterAll(async () => prisma.$disconnect());
|
||||
|
||||
it.each([[false, 1], [true, 1], [false, 2], [true, 2]] as const)(
|
||||
'extends legacy intents in stable priority order (atomic=%s, previousPriority=%s)',
|
||||
async (atomic, previousPriority) => {
|
||||
const run = 'legacy-run';
|
||||
const initial = await repository.request('owner', 'revision', [january, february], run, false, new Set(), previousPriority);
|
||||
if (!initial) throw new Error('Missing work');
|
||||
const key = (range: typeof january) => JSON.stringify([
|
||||
range.accountId, range.from.toISOString(), range.to.toISOString(), '',
|
||||
]);
|
||||
const march = { ...january, from: february.to, to: new Date('2026-04-01Z') };
|
||||
await prisma.tbankSyncWork.update({
|
||||
where: { id: initial.work.id },
|
||||
data: { intent: { atomic, intervals: [key(february), key(january)] } },
|
||||
});
|
||||
const extended = await repository.request(
|
||||
'owner', 'revision', [january, march], run, false,
|
||||
new Set([initial.work.attemptId]), 1,
|
||||
);
|
||||
expect(extended?.launch).toBe(false);
|
||||
expect(extended?.work.id).toBe(initial.work.id);
|
||||
expect(extended?.work.priority).toBe(1);
|
||||
expect(extended?.work.intent).toEqual({
|
||||
atomic,
|
||||
atomicIntervals: atomic ? [key(february), key(january), key(march)] : [],
|
||||
screenIntervals: previousPriority === 1
|
||||
? [key(february), key(january), key(march)]
|
||||
: [key(january), key(march)],
|
||||
intervals: previousPriority === 1
|
||||
? [key(february), key(january), key(march)]
|
||||
: [key(january), key(march), key(february)],
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
it('joins overlapping account and instrument refresh into one atomic publication group', async () => {
|
||||
const gate = deferred<TbankOperationsByCursorResponse>();
|
||||
upstream.getOperationsByCursor
|
||||
|
||||
Reference in New Issue
Block a user