-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.test.ts
67 lines (53 loc) · 2.54 KB
/
index.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { describe, expect, it } from 'vitest'
import { Hono } from 'hono'
import { klona } from 'klona'
import type { LambdaEvent, LambdaRequestEvent, LambdaTriggerEvent } from '@namesmt/utils-lambda'
import sampleEvent from './sample-event-v2.json'
import { createTriggerFactory } from '~/trigger'
import type { LambdaHandlerResult } from '~/types'
import { handle } from '~/handler'
type ShimSimpleHandler = (event: LambdaEvent) => Promise<LambdaHandlerResult>
function makeSampleEvent({ path = 'path', method = 'GET' }) {
const event = klona(sampleEvent)
event.rawPath = event.requestContext.http.path = path
event.routeKey = event.requestContext.routeKey = `${method} ${path}`
event.requestContext.http.method = method
return event as LambdaRequestEvent
}
function makeTriggerEvent(eventSource: string) {
const event = { eventSource }
return event as LambdaTriggerEvent
}
describe('basic', () => {
describe('normal handler', () => {
describe('simple usage', () => {
const app = new Hono()
const triggerFactory = createTriggerFactory(app)
let shouldBeChanged = ''
// Registering routes
app.get('/', c => c.text('Hello Hono!'))
app.get('/hi', c => c.text('Hi Hono!'))
triggerFactory.on('test:rootTakeover', '$!', c => c.text('Hello Trigger Event!'))
triggerFactory.on('test:rootReturn', '$=', c => c.text('Hello Trigger Event!'))
triggerFactory.on('test:rootReturn', 'changeLet', (c) => {
shouldBeChanged = 'changed'
return c.text('')
})
triggerFactory.on('test:resObj', 'a1', c => c.text('Hello from a1'))
triggerFactory.on('test:resObj', 'b2', c => c.text('Hello from b2'))
// Create handler
const handler = handle(app) as ShimSimpleHandler
it('should process some basic events flawlessly 💅', async () => {
expect(handler(makeSampleEvent({ path: '/' }))).resolves.toMatchObject({ body: 'Hello Hono!' })
expect(handler(makeSampleEvent({ path: '/hi' }))).resolves.toMatchObject({ body: 'Hi Hono!' })
expect(handler(makeTriggerEvent('test:rootTakeover'))).resolves.toMatchObject({ body: 'Hello Trigger Event!' })
expect(handler(makeTriggerEvent('test:rootReturn'))).resolves.toMatchObject({ body: 'Hello Trigger Event!' }).then(() => {
expect(shouldBeChanged).toBe('changed')
})
expect(handler(makeTriggerEvent('test:resObj'))).resolves.toMatchObject({ body: JSON.stringify({ a1: 'Hello from a1', b2: 'Hello from b2' }) })
})
})
})
describe.skip('stream handler', () => {
})
})