fork of hey-api/openapi-ts because I need some additional things
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #2416 from hey-api/fix/tanstack-query-pagination-name

fix(tanstack-query): set correct name for pagination parameters in infinite query options

authored by

Lubos and committed by
GitHub
39fd3dd7 739a18df

+45 -21
+5
.changeset/perfect-berries-beam.md
··· 1 + --- 2 + '@hey-api/openapi-ts': patch 3 + --- 4 + 5 + fix(tanstack-query): set correct name for pagination parameters in infinite query options
+31 -12
packages/openapi-ts/src/ir/__tests__/pagination.test.ts
··· 7 7 import type { IR } from '../types'; 8 8 9 9 describe('paginationKeywordsRegExp', () => { 10 - const defaultScenarios: Array<{ 10 + const defaultScenarios: ReadonlyArray<{ 11 11 result: boolean; 12 12 value: string; 13 13 }> = [ ··· 55 55 }, 56 56 ); 57 57 58 - const customScenarios: Array<{ 58 + const customScenarios: ReadonlyArray<{ 59 59 result: boolean; 60 60 value: string; 61 61 }> = [ ··· 98 98 path: '/test' as const, 99 99 }; 100 100 101 - const queryScenarios: Array<{ 101 + const queryScenarios: ReadonlyArray<{ 102 102 hasPagination: boolean; 103 103 operation: IR.OperationObject; 104 104 }> = [ ··· 128 128 }, 129 129 }, 130 130 }, 131 + { 132 + hasPagination: true, 133 + operation: { 134 + ...baseOperationMeta, 135 + id: 'op3', 136 + method: 'get', 137 + parameters: { 138 + query: { 139 + pagesize: queryParam('pageSize', 'string', true), 140 + }, 141 + }, 142 + }, 143 + }, 131 144 ]; 132 145 133 146 it.each(queryScenarios)( 134 147 'query params for $operation.id → $hasPagination', 135 - ({ 136 - hasPagination, 137 - operation, 138 - }: { 139 - hasPagination: boolean; 140 - operation: IR.OperationObject; 141 - }) => { 142 - const result = operationPagination({ context: emptyContext, operation }); 143 - expect(Boolean(result)).toEqual(hasPagination); 148 + ({ hasPagination, operation }: (typeof queryScenarios)[number]) => { 149 + const pagination = operationPagination({ 150 + context: emptyContext, 151 + operation, 152 + }); 153 + expect(Boolean(pagination)).toEqual(hasPagination); 154 + if (pagination && pagination.in !== 'body') { 155 + const parameter = 156 + operation.parameters?.[pagination.in]?.[ 157 + pagination.name.toLocaleLowerCase() 158 + ]; 159 + if (parameter) { 160 + expect(pagination.name).toBe(parameter.name); 161 + } 162 + } 144 163 }, 145 164 ); 146 165
+1 -1
packages/openapi-ts/src/ir/pagination.ts
··· 9 9 } 10 10 11 11 export interface Pagination { 12 - in: string; 12 + in: 'body' | 'cookie' | 'header' | 'path' | 'query'; 13 13 name: string; 14 14 schema: IR.SchemaObject; 15 15 }
+8 -8
packages/openapi-ts/src/ir/parameter.ts
··· 80 80 in: parameter.location, 81 81 name: 82 82 parameter.pagination === true 83 - ? name 84 - : `${name}.${parameter.pagination}`, 83 + ? parameter.name 84 + : `${parameter.name}.${parameter.pagination}`, 85 85 schema: getPaginationSchema({ context, parameter })!, 86 86 }; 87 87 } ··· 94 94 in: parameter.location, 95 95 name: 96 96 parameter.pagination === true 97 - ? name 98 - : `${name}.${parameter.pagination}`, 97 + ? parameter.name 98 + : `${parameter.name}.${parameter.pagination}`, 99 99 schema: getPaginationSchema({ context, parameter })!, 100 100 }; 101 101 } ··· 108 108 in: parameter.location, 109 109 name: 110 110 parameter.pagination === true 111 - ? name 112 - : `${name}.${parameter.pagination}`, 111 + ? parameter.name 112 + : `${parameter.name}.${parameter.pagination}`, 113 113 schema: getPaginationSchema({ context, parameter })!, 114 114 }; 115 115 } ··· 122 122 in: parameter.location, 123 123 name: 124 124 parameter.pagination === true 125 - ? name 126 - : `${name}.${parameter.pagination}`, 125 + ? parameter.name 126 + : `${parameter.name}.${parameter.pagination}`, 127 127 schema: getPaginationSchema({ context, parameter })!, 128 128 }; 129 129 }