Skip to content

Commit fd247b7

Browse files
committed
adding test cases
1 parent 209bbdf commit fd247b7

File tree

2 files changed

+130
-0
lines changed

2 files changed

+130
-0
lines changed

test/config.test.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/* global describe, it, expect, beforeAll */
2+
3+
const http = require('../index')
4+
const { router } = http({
5+
port: 3000,
6+
defaultRoute: (req) => {
7+
const res = new Response('Not Found!', {
8+
status: 404
9+
})
10+
11+
return res
12+
},
13+
errorHandler: (err) => {
14+
const res = new Response('Error: ' + err.message, {
15+
status: 500
16+
})
17+
18+
return res
19+
}
20+
})
21+
22+
describe('Router Configuration', () => {
23+
beforeAll(async () => {
24+
router.get('/error', () => {
25+
throw new Error('Unexpected error')
26+
})
27+
})
28+
29+
it('should return a 500 response for a route that throws an error', async () => {
30+
const response = await router.fetch(new Request('http://localhost:3000/error', {
31+
method: 'GET'
32+
}))
33+
expect(response.status).toBe(500)
34+
expect(await response.text()).toEqual('Error: Unexpected error')
35+
})
36+
37+
it('should return a 404 response for a route that does not exist', async () => {
38+
const response = await router.fetch(new Request('http://localhost:3000/does-not-exist', {
39+
method: 'GET'
40+
}))
41+
expect(response.status).toBe(404)
42+
expect(await response.text()).toEqual('Not Found!')
43+
})
44+
})

test/smoke.test.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/* global describe, it, expect, beforeAll */
2+
3+
const http = require('../index')
4+
const { router } = http({ port: 3000 })
5+
6+
describe('Router', () => {
7+
beforeAll(async () => {
8+
router.use((req, next) => {
9+
req.ctx = {
10+
engine: 'bun'
11+
}
12+
13+
return next()
14+
})
15+
16+
router.get('/get-params/:id', (req) => {
17+
return Response.json(req.params)
18+
})
19+
20+
router.delete('/get-params/:id', () => {
21+
return Response.json('OK')
22+
})
23+
24+
router.get('/error', () => {
25+
throw new Error('Unexpected error')
26+
})
27+
28+
router.post('/create', async (req) => {
29+
const body = await req.text()
30+
31+
return Response.json(JSON.parse(body))
32+
})
33+
34+
router.get('/', (req) => {
35+
return Response.json(req.ctx)
36+
})
37+
})
38+
39+
it('should return a JSON response with the request parameters for GET requests', async () => {
40+
const response = await router.fetch(new Request('http://localhost:3000/get-params/123', {
41+
method: 'GET'
42+
}))
43+
expect(response.status).toBe(200)
44+
expect(await response.json()).toEqual({ id: '123' })
45+
})
46+
47+
it('should return a JSON response with the request parameters for DELETE requests', async () => {
48+
const response = await router.fetch(new Request('http://localhost:3000/get-params/123', {
49+
method: 'DELETE'
50+
}))
51+
expect(response.status).toBe(200)
52+
expect(await response.json()).toEqual('OK')
53+
})
54+
55+
it('should return a JSON response with the request body for POST requests', async () => {
56+
const response = await router.fetch(new Request('http://localhost:3000/create', {
57+
method: 'POST',
58+
body: JSON.stringify({ foo: 'bar' })
59+
}))
60+
expect(response.status).toBe(200)
61+
expect(await response.json()).toEqual({ foo: 'bar' })
62+
})
63+
64+
it('should return a 404 response for a non-existent route', async () => {
65+
const response = await router.fetch(new Request('http://localhost:3000/non-existent', {
66+
method: 'GET'
67+
}))
68+
expect(response.status).toBe(404)
69+
})
70+
71+
it('should return a 500 response for a route that throws an error', async () => {
72+
const response = await router.fetch(new Request('http://localhost:3000/error', {
73+
method: 'GET'
74+
}))
75+
expect(response.status).toBe(500)
76+
expect(await response.text()).toEqual('Unexpected error')
77+
})
78+
79+
it('should return a 200 response for a route that returns a Response object', async () => {
80+
const response = await router.fetch(new Request('http://localhost:3000/', {
81+
method: 'GET'
82+
}))
83+
expect(response.status).toBe(200)
84+
expect(await response.json()).toEqual({ engine: 'bun' })
85+
})
86+
})

0 commit comments

Comments
 (0)