Skip to content

Commit 40c2e9e

Browse files
committed
Add new option with expectation as new test
1 parent 1e7069d commit 40c2e9e

File tree

5 files changed

+64
-0
lines changed

5 files changed

+64
-0
lines changed

packages/openapi-typescript/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export default async function openapiTS(
9595
resolve($ref) {
9696
return resolveRef(schema, $ref, { silent: options.silent ?? false });
9797
},
98+
makeParametersWithDefaultNotUndefined: options.makeParametersWithDefaultNotUndefined ?? false,
9899
};
99100

100101
const transformT = performance.now();

packages/openapi-typescript/src/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,10 @@ export interface OpenAPITSOptions {
679679
makePathsEnum?: boolean;
680680
/** Generate path params based on path even if they are not defiend in the open api schema */
681681
generatePathParams?: boolean;
682+
/** Generate non-optional parameter types if the parameter has a default. This is useful
683+
* for server implementations that automatically set the default from the spec for the user.
684+
*/
685+
makeParametersWithDefaultNotUndefined?: boolean;
682686
}
683687

684688
/** Context passed to all submodules */
@@ -714,6 +718,7 @@ export interface GlobalContext {
714718
inject?: string;
715719
makePathsEnum: boolean;
716720
generatePathParams: boolean;
721+
makeParametersWithDefaultNotUndefined: boolean;
717722
}
718723

719724
export type $defs = Record<string, SchemaObject>;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
openapi: "3.0"
2+
info:
3+
title: test
4+
version: "1.0"
5+
paths:
6+
/endpoint:
7+
get:
8+
description: OK
9+
parameters:
10+
- in: query
11+
name: optional_nodefault
12+
schema:
13+
type: string
14+
required: false
15+
- in: query
16+
name: optional_default
17+
schema:
18+
type: string
19+
required: false

packages/openapi-typescript/test/test-helpers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export const DEFAULT_CTX: GlobalContext = {
3434
transformProperty: undefined,
3535
makePathsEnum: false,
3636
generatePathParams: false,
37+
makeParametersWithDefaultNotUndefined: false,
3738
};
3839

3940
/** Generic test case */

packages/openapi-typescript/test/transform/parameters-with-default.test.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,44 @@ describe("parametersWithDefaults", () => {
4545
},
4646
},
4747
],
48+
[
49+
"options > makeParametersWithDefaultNotUndefined: true",
50+
{
51+
given: {
52+
"/api/{version}/user/{user_id}": {
53+
parameters: [
54+
{ in: "query", name: "no_default", required: false, schema: { type: "number" } },
55+
{ in: "query", name: "with_default", required: false, schema: { type: "number", default: 1337 } },
56+
],
57+
},
58+
},
59+
want: `{
60+
"/api/{version}/user/{user_id}": {
61+
parameters: {
62+
query: {
63+
no_default?: number;
64+
with_default: number;
65+
};
66+
header?: never;
67+
path?: never;
68+
cookie?: never;
69+
};
70+
get?: never;
71+
put?: never;
72+
post?: never;
73+
delete?: never;
74+
options?: never;
75+
head?: never;
76+
patch?: never;
77+
trace?: never;
78+
};
79+
}`,
80+
options: {
81+
...DEFAULT_OPTIONS,
82+
makeParametersWithDefaultNotUndefined: true,
83+
},
84+
},
85+
],
4886
];
4987

5088
for (const [testName, { given, want, options = DEFAULT_OPTIONS, ci }] of tests) {

0 commit comments

Comments
 (0)