|
1 | 1 | import supertest, { SuperTest, Test } from 'supertest'
|
2 | 2 | import { describe, it, expect, beforeEach } from 'vitest'
|
3 |
| -import { createApp, createRouter, App, Router } from '../src' |
| 3 | +import { createApp, createRouter, App, Router, getRouterParams, getRouterParam } from '../src' |
4 | 4 |
|
5 | 5 | describe('router', () => {
|
6 | 6 | let app: App
|
@@ -61,3 +61,73 @@ describe('router', () => {
|
61 | 61 | expect(res.status).toEqual(405)
|
62 | 62 | })
|
63 | 63 | })
|
| 64 | + |
| 65 | +describe('getRouterParams', () => { |
| 66 | + let app: App |
| 67 | + let request: SuperTest<Test> |
| 68 | + |
| 69 | + beforeEach(() => { |
| 70 | + app = createApp({ debug: false }) |
| 71 | + request = supertest(app) |
| 72 | + }) |
| 73 | + |
| 74 | + describe('with router', () => { |
| 75 | + it('can return router params', async () => { |
| 76 | + const router = createRouter().get('/test/params/:name', (request) => { |
| 77 | + expect(getRouterParams(request)).toMatchObject({ name: 'string' }) |
| 78 | + return '200' |
| 79 | + }) |
| 80 | + app.use(router) |
| 81 | + const result = await request.get('/test/params/string') |
| 82 | + |
| 83 | + expect(result.text).toBe('200') |
| 84 | + }) |
| 85 | + }) |
| 86 | + |
| 87 | + describe('without router', () => { |
| 88 | + it('can return an empty object if router is not used', async () => { |
| 89 | + app.use('/', (request) => { |
| 90 | + expect(getRouterParams(request)).toMatchObject({}) |
| 91 | + return '200' |
| 92 | + }) |
| 93 | + const result = await request.get('/test/empty/params') |
| 94 | + |
| 95 | + expect(result.text).toBe('200') |
| 96 | + }) |
| 97 | + }) |
| 98 | +}) |
| 99 | + |
| 100 | +describe('getRouterParam', () => { |
| 101 | + let app: App |
| 102 | + let request: SuperTest<Test> |
| 103 | + |
| 104 | + beforeEach(() => { |
| 105 | + app = createApp({ debug: false }) |
| 106 | + request = supertest(app) |
| 107 | + }) |
| 108 | + |
| 109 | + describe('with router', () => { |
| 110 | + it('can return a value of router params corresponding to the given name', async () => { |
| 111 | + const router = createRouter().get('/test/params/:name', (request) => { |
| 112 | + expect(getRouterParam(request, 'name')).toEqual('string') |
| 113 | + return '200' |
| 114 | + }) |
| 115 | + app.use(router) |
| 116 | + const result = await request.get('/test/params/string') |
| 117 | + |
| 118 | + expect(result.text).toBe('200') |
| 119 | + }) |
| 120 | + }) |
| 121 | + |
| 122 | + describe('without router', () => { |
| 123 | + it('can return `undefined` for any keys', async () => { |
| 124 | + app.use('/', (request) => { |
| 125 | + expect(getRouterParam(request, 'name')).toEqual(undefined) |
| 126 | + return '200' |
| 127 | + }) |
| 128 | + const result = await request.get('/test/empty/params') |
| 129 | + |
| 130 | + expect(result.text).toBe('200') |
| 131 | + }) |
| 132 | + }) |
| 133 | +}) |
0 commit comments