MCPcopy
hub / github.com/tldraw/tldraw / makeMockAlarmScheduler

Function makeMockAlarmScheduler

apps/dotcom/sync-worker/src/AlarmScheduler.test.ts:7–56  ·  view source on GitHub ↗
(alarms: {
	[K in Key]: ReturnType<typeof vi.fn<(...args: any[]) => any>>
})

Source from the content-addressed store, hash-verified

5vi.useFakeTimers()
6
7function makeMockAlarmScheduler<Key extends string>(alarms: {
8 [K in Key]: ReturnType<typeof vi.fn<(...args: any[]) => any>>
9}) {
10 const data = new Map<string, number>()
11 let scheduledAlarm: number | null = null
12
13 const storage = {
14 getAlarm: async () => scheduledAlarm,
15 setAlarm: vi.fn((time: number | Date) => {
16 scheduledAlarm = typeof time === 'number' ? time : time.getTime()
17 }),
18 get: async (key: string) => data.get(key),
19 list: async () => new Map(data),
20 delete: async (keys: string[]) => {
21 let count = 0
22 for (const key of keys) {
23 if (data.delete(key)) count++
24 }
25 return count
26 },
27 put: async (entries: Record<string, number>) => {
28 for (const [key, value] of Object.entries(entries)) {
29 data.set(key, value)
30 }
31 },
32 asObject: () => Object.fromEntries(data),
33 }
34
35 const scheduler = new AlarmScheduler({
36 alarms,
37 storage: () => storage,
38 })
39
40 const advanceTime = async (time: number) => {
41 vi.advanceTimersByTime(time)
42 if (scheduledAlarm !== null && scheduledAlarm <= Date.now()) {
43 scheduledAlarm = null
44 await scheduler.onAlarm()
45 // process the alarms that were scheduled during the onAlarm call:
46 if (scheduledAlarm) await advanceTime(0)
47 }
48 }
49
50 return {
51 scheduler,
52 storage,
53 alarms,
54 advanceTime,
55 }
56}
57
58describe('AlarmScheduler', () => {
59 beforeEach(() => {

Callers 1

Calls 4

getMethod · 0.65
deleteMethod · 0.65
entriesMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…