feat: T4 wave 3 - notifications per user, suggestions API, varroa bands, split/queen events
- Schema III: per-user notifications (broadcast fan-out migration, category, link, requiredPermissions filter), notification preferences and settings endpoints, calendar withdrawal switch, occupiedFrames - Suggestions API: list/summary with permission visibility and paging, accept/dismiss/reopen incl. bulk, SuggestionView on all responses - Varroa traffic light by season and method, young colonies, treatment effect window, sample-based percentage; shared withdrawal-window helper on Berlin calendar days; GET /varroa-measurements/thresholds - ColonySplit and QueenAssigned domain events with calendar and webhook handlers - Outbox claims compare against now() rounded to timestamp(3); fixes the flaky e2e claims of rows written with SQL now() Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
d99a697739
commit
f468dc5f75
87 files changed
+6022
-510
No files matched your search
@@ -59,6 +59,24 @@ describe('CalendarSyncEventHandlers', () => {
|
||||
},
|
||||
);
|
||||
|
||||
it('QueenAssigned enqueues QUEEN_ASSIGNMENT with the history id', async () => {
|
||||
await handlers.queenAssignment(
|
||||
envelope('QueenAssigned', 'queen-1', {
|
||||
colonyId: 'colony-1',
|
||||
historyId: 'history-1',
|
||||
assignedOn: '2026-10-14',
|
||||
previousColonyId: null,
|
||||
}),
|
||||
tx,
|
||||
);
|
||||
|
||||
expect(calendarSync.enqueueIn).toHaveBeenCalledWith(
|
||||
tx,
|
||||
'QUEEN_ASSIGNMENT',
|
||||
'history-1',
|
||||
);
|
||||
});
|
||||
|
||||
it('TaskCreated without a due date enqueues nothing', async () => {
|
||||
await handlers.task(
|
||||
envelope('TaskCreated', 'task-1', { dueDate: null }),
|
||||
@@ -105,6 +123,12 @@ describe('CalendarSyncEventHandlers', () => {
|
||||
);
|
||||
expect(registered('feeding')[0].handlerId).toBe('calendar-sync.feeding');
|
||||
expect(registered('harvest')[0].handlerId).toBe('calendar-sync.harvest');
|
||||
expect(registered('queenAssignment')).toEqual([
|
||||
{
|
||||
types: ['QueenAssigned'],
|
||||
handlerId: 'calendar-sync.queen-assignment',
|
||||
},
|
||||
]);
|
||||
expect(registered('task')).toEqual([
|
||||
{
|
||||
types: ['TaskCreated', 'TaskUpdated', 'TaskCompleted'],
|
||||
|
||||
Reference in new issue
Block a user