1
1
import { describe , it , expect } from 'bun:test'
2
- import { getPossiblePath } from '../src/openapi'
2
+ import { Elysia , t } from 'elysia'
3
+ import { getPossiblePath , toOpenAPISchema } from '../src/openapi'
3
4
4
5
describe ( 'OpenAPI utilities' , ( ) => {
5
6
it ( 'getPossiblePath' , ( ) => {
@@ -12,3 +13,54 @@ describe('OpenAPI utilities', () => {
12
13
] )
13
14
} )
14
15
} )
16
+
17
+ describe ( 'Convert Elysia routes to OpenAPI 3.0.3 paths schema' , ( ) => {
18
+ describe ( 'with path, header, query and cookie params' , ( ) => {
19
+ const app = new Elysia ( ) . get ( '/' , ( ) => 'hi' , {
20
+ response : t . String ( { description : 'sample description' } ) ,
21
+ headers : t . Object ( {
22
+ testheader : t . String ( )
23
+ } ) ,
24
+ params : t . Object ( {
25
+ testparam : t . String ( )
26
+ } ) ,
27
+ query : t . Object ( {
28
+ testquery : t . String ( )
29
+ } ) ,
30
+ cookie : t . Cookie ( {
31
+ testcookie : t . String ( )
32
+ } )
33
+ } )
34
+
35
+ const {
36
+ paths : { [ '/' ] : path }
37
+ } = toOpenAPISchema ( app )
38
+
39
+ const parameters = path ?. get ?. parameters ?? [ ]
40
+
41
+ it ( 'includes all expected parameters' , ( ) => {
42
+ const names = parameters . map ( ( p : any ) => p . name )
43
+ expect ( names ) . toEqual (
44
+ expect . arrayContaining ( [
45
+ 'testheader' ,
46
+ 'testparam' ,
47
+ 'testquery' ,
48
+ 'testcookie'
49
+ ] )
50
+ )
51
+ expect ( names ) . toHaveLength ( 4 )
52
+ } )
53
+
54
+ it ( 'marks each parameter with the correct OpenAPI parameter location' , ( ) => {
55
+ const map = Object . fromEntries (
56
+ parameters . map ( ( p : any ) => [ p . name , p . in ] )
57
+ )
58
+ expect ( map ) . toMatchObject ( {
59
+ testheader : 'header' ,
60
+ testparam : 'path' ,
61
+ testquery : 'query' ,
62
+ testcookie : 'cookie'
63
+ } )
64
+ } )
65
+ } )
66
+ } )
0 commit comments