File tree 3 files changed +70
-4
lines changed
3 files changed +70
-4
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "openapi" : " 3.0.0" ,
3
+ "info" : {
4
+ "version" : " 1.0" ,
5
+ "title" : " Foo"
6
+ },
7
+ "components" : {
8
+ "parameters" : {
9
+ "testParam" : {
10
+ "in" : " path" ,
11
+ "name" : " test_name" ,
12
+ "schema" : { "type" : " string" }
13
+ }
14
+ },
15
+ "headers" : {
16
+ "testHeader" : {
17
+ "description" : " The response content language" ,
18
+ "schema" : {
19
+ "type" : " string"
20
+ }
21
+ }
22
+ }
23
+ }
24
+ }
Original file line number Diff line number Diff line change
1
+ import { FieldModel } from '../../models/Field' ;
2
+ import { OpenAPIParser } from '../../OpenAPIParser' ;
3
+ import { RedocNormalizedOptions } from '../../RedocNormalizedOptions' ;
4
+
5
+ const opts = new RedocNormalizedOptions ( { } ) ;
6
+
7
+ describe ( 'Models' , ( ) => {
8
+ describe ( 'FieldModel' , ( ) => {
9
+ let parser ;
10
+ const spec = require ( '../fixtures/fields.json' ) ;
11
+ parser = new OpenAPIParser ( spec , undefined , opts ) ;
12
+
13
+ test ( 'basic field details' , ( ) => {
14
+ const field = new FieldModel (
15
+ parser ,
16
+ {
17
+ $ref : '#/components/parameters/testParam' ,
18
+ } ,
19
+ '#/components/parameters/testParam' ,
20
+ opts ,
21
+ ) ;
22
+
23
+ expect ( field . name ) . toEqual ( 'test_name' ) ;
24
+ expect ( field . in ) . toEqual ( 'path' ) ;
25
+ expect ( field . required ) . toEqual ( false ) ;
26
+ expect ( field . schema . type ) . toEqual ( 'string' ) ;
27
+ } ) ;
28
+
29
+ test ( 'field name should populated from name even if $ref (headers)' , ( ) => {
30
+ const field = new FieldModel (
31
+ parser ,
32
+ {
33
+ $ref : '#/components/headers/testHeader' ,
34
+ name : 'Test-Header' ,
35
+ } ,
36
+ '#/components/headers/testHeader' ,
37
+ opts ,
38
+ ) ;
39
+
40
+ expect ( field . name ) . toEqual ( 'Test-Header' ) ;
41
+ } ) ;
42
+ } ) ;
43
+ } ) ;
Original file line number Diff line number Diff line change @@ -22,13 +22,12 @@ export class FieldModel {
22
22
23
23
constructor (
24
24
parser : OpenAPIParser ,
25
- infoOrRef : Referenced < OpenAPIParameter > ,
25
+ infoOrRef : Referenced < OpenAPIParameter > & { name ?: string } ,
26
26
pointer : string ,
27
27
options : RedocNormalizedOptions ,
28
28
) {
29
- const info = parser . deref ( infoOrRef ) ;
30
-
31
- this . name = info . name ;
29
+ const info = parser . deref < OpenAPIParameter > ( infoOrRef ) ;
30
+ this . name = infoOrRef . name || info . name ;
32
31
this . in = info . in ;
33
32
this . required = ! ! info . required ;
34
33
const schemaPointer = ( parser . isRef ( infoOrRef ) ? infoOrRef . $ref : pointer ) + '/schema' ;
You can’t perform that action at this time.
0 commit comments