Skip to content

Commit be6f9a6

Browse files
authored
Merge pull request #4084 from julien-tricent/bugfix/4058
2 parents 37328ca + 2bc959a commit be6f9a6

File tree

4 files changed

+59
-4
lines changed

4 files changed

+59
-4
lines changed

packages/rtk-query-codegen-openapi/src/generate.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,10 +278,14 @@ export async function generateApi(
278278
).name
279279
);
280280

281-
const parameters = supportDeepObjects([
282-
...apiGen.resolveArray(pathItem.parameters),
283-
...apiGen.resolveArray(operation.parameters),
284-
]).filter(argumentMatches(overrides?.parameterFilter));
281+
const operationParameters = apiGen.resolveArray(operation.parameters);
282+
const pathItemParameters = apiGen
283+
.resolveArray(pathItem.parameters)
284+
.filter((pp) => !operationParameters.some((op) => op.name === pp.name && op.in === pp.in));
285+
286+
const parameters = supportDeepObjects([...pathItemParameters, ...operationParameters]).filter(
287+
argumentMatches(overrides?.parameterFilter)
288+
);
285289

286290
const allNames = parameters.map((p) => p.name);
287291
const queryArg: QueryArgDefinitions = {};

packages/rtk-query-codegen-openapi/test/__snapshots__/generateEndpoints.test.ts.snap

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2524,6 +2524,24 @@ export type ExampleSchemaWrite = {
25242524
"
25252525
`;
25262526

2527+
exports[`query parameters > parameters overridden in swagger should also be overridden in the code 1`] = `
2528+
"import { api } from "./fixtures/emptyApi";
2529+
const injectedRtkApi = api.injectEndpoints({
2530+
endpoints: (build) => ({
2531+
getUsersById: build.query<GetUsersByIdApiResponse, GetUsersByIdApiArg>({
2532+
query: (queryArg) => ({ url: \`/users/\${queryArg.id}\` }),
2533+
}),
2534+
}),
2535+
overrideExisting: false,
2536+
});
2537+
export { injectedRtkApi as enhancedApi };
2538+
export type GetUsersByIdApiResponse = unknown;
2539+
export type GetUsersByIdApiArg = {
2540+
id: number;
2541+
};
2542+
"
2543+
`;
2544+
25272545
exports[`should use brackets in a querystring urls arg, when the arg contains full stops 1`] = `
25282546
"import { api } from "./fixtures/emptyApi";
25292547
const injectedRtkApi = api.injectEndpoints({
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
openapi: 3.0.2
2+
info:
3+
title: parameterOverride
4+
version: 1.0.0
5+
paths:
6+
/users/{id}:
7+
parameters:
8+
- in: path
9+
name: id
10+
schema:
11+
type: string
12+
required: true
13+
get:
14+
summary: Gets one or more users by ID.
15+
parameters:
16+
- in: path
17+
name: id
18+
required: true
19+
schema:
20+
type: integer
21+
responses:
22+
'200':
23+
description: OK

packages/rtk-query-codegen-openapi/test/generateEndpoints.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,3 +563,13 @@ describe('openapi spec', () => {
563563
expect(api).toMatchSnapshot();
564564
});
565565
});
566+
567+
describe('query parameters', () => {
568+
it('parameters overridden in swagger should also be overridden in the code', async () => {
569+
const api = await generateEndpoints({
570+
schemaFile: './test/fixtures/parameterOverride.yaml',
571+
apiFile: './fixtures/emptyApi.ts',
572+
});
573+
expect(api).toMatchSnapshot();
574+
});
575+
});

0 commit comments

Comments
 (0)