Files
goodbuddy/src/main/assistant/heartbeat-recurrence.test.ts
T
lofyerandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> b3fdf96962 feat: expand secure assistant workflows
Harden runtime execution and add local knowledge, Smart Heartbeat, usage visibility, responsive product surfaces, and cross-platform packaging support.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-02 10:04:59 +08:00

42 lines
1.2 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
assertValidHeartbeatTimezone,
computeNextHeartbeatRun
} from './heartbeat-recurrence'
describe('heartbeat recurrence', () => {
it('keeps daily wall-clock time across daylight-saving changes', () => {
expect(
computeNextHeartbeatRun(
{ type: 'daily', localTime: '02:30' },
'America/New_York',
new Date('2026-03-07T12:00:00.000Z')
).toISOString()
).toBe('2026-03-08T07:00:00.000Z')
expect(
computeNextHeartbeatRun(
{ type: 'daily', localTime: '01:30' },
'America/New_York',
new Date('2026-11-01T05:31:00.000Z')
).toISOString()
).toBe('2026-11-01T06:30:00.000Z')
})
it('computes weekly recurrence using the configured local weekday', () => {
expect(
computeNextHeartbeatRun(
{ type: 'weekly', weekday: 1, localTime: '09:15' },
'Asia/Tokyo',
new Date('2026-07-31T00:00:00.000Z')
).toISOString()
).toBe('2026-08-03T00:15:00.000Z')
})
it('rejects invalid IANA timezones', () => {
expect(() =>
assertValidHeartbeatTimezone('Not/A_Timezone')
).toThrow('Invalid heartbeat timezone')
})
})