mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 15:44:02 +00:00
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
|
|
import { Temporal } from '@household/domain'
|
|
|
|
import { createAwsScheduledDispatchScheduler } from './aws-scheduled-dispatch-scheduler'
|
|
|
|
describe('createAwsScheduledDispatchScheduler', () => {
|
|
test('creates one-shot EventBridge schedules targeting the bot lambda', async () => {
|
|
const calls: unknown[] = []
|
|
const scheduler = createAwsScheduledDispatchScheduler({
|
|
region: 'eu-central-1',
|
|
targetLambdaArn: 'arn:aws:lambda:eu-central-1:123:function:bot',
|
|
roleArn: 'arn:aws:iam::123:role/scheduler',
|
|
groupName: 'dispatches',
|
|
client: {
|
|
send: async (command) => {
|
|
calls.push(command.input)
|
|
return {}
|
|
}
|
|
}
|
|
})
|
|
|
|
const result = await scheduler.scheduleOneShotDispatch({
|
|
dispatchId: 'dispatch-1',
|
|
dueAt: Temporal.Instant.from('2026-03-24T12:00:00Z')
|
|
})
|
|
|
|
expect(result.providerDispatchId).toContain('dispatch-dispatch-1-')
|
|
expect(calls[0]).toMatchObject({
|
|
GroupName: 'dispatches',
|
|
ScheduleExpression: 'at(2026-03-24T12:00:00Z)',
|
|
ActionAfterCompletion: 'DELETE',
|
|
FlexibleTimeWindow: {
|
|
Mode: 'OFF'
|
|
},
|
|
Target: {
|
|
Arn: 'arn:aws:lambda:eu-central-1:123:function:bot',
|
|
RoleArn: 'arn:aws:iam::123:role/scheduler',
|
|
Input: JSON.stringify({
|
|
source: 'household.scheduled-dispatch',
|
|
dispatchId: 'dispatch-1'
|
|
})
|
|
}
|
|
})
|
|
})
|
|
})
|