|
5 | 5 | utils,
|
6 | 6 | } from './date';
|
7 | 7 | import {
|
| 8 | + deserializePathParams, |
| 9 | + deserializeQueryParams, |
8 | 10 | serializePathParams,
|
9 | 11 | serializeQueryParams,
|
10 | 12 | } from './param-serialization';
|
@@ -215,3 +217,62 @@ describe('Serialize parameters', () => {
|
215 | 217 | expect(serializePathParams(mockUtilsDateTimeParams, { idUtilsDateTime: { explode: true, style: 'simple' } })).toEqual({ idUtilsDateTime: '2025-01-01T00:00:00.000' });
|
216 | 218 | });
|
217 | 219 | });
|
| 220 | + |
| 221 | +describe('Deserialize parameters', () => { |
| 222 | + it('should correctly deserialize query parameters', () => { |
| 223 | + // value = primitive |
| 224 | + expect(deserializeQueryParams({ idPrimitive: 'idPrimitive=5' }, { idPrimitive: { explode: true, style: 'form', paramType: 'primitive' } })).toEqual({ idPrimitive: '5' }); |
| 225 | + expect(deserializeQueryParams({ idPrimitive: 'idPrimitive=5' }, { idPrimitive: { explode: false, style: 'form', paramType: 'primitive' } })).toEqual({ idPrimitive: '5' }); |
| 226 | + // value = array |
| 227 | + expect(deserializeQueryParams({ idArray: 'idArray=3&idArray=4&idArray=5' }, { idArray: { explode: true, style: 'form', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 228 | + expect(deserializeQueryParams({ idArray: 'idArray=3,4,5' }, { idArray: { explode: false, style: 'form', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 229 | + expect(deserializeQueryParams({ idArray: 'should-not-work' }, { idArray: { explode: true, style: 'spaceDelimited', paramType: 'array' } })).toEqual({ idArray: undefined }); |
| 230 | + expect(deserializeQueryParams({ idArray: 'idArray=3%204%205' }, { idArray: { explode: false, style: 'spaceDelimited', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 231 | + expect(deserializeQueryParams({ idArray: 'should-not-work' }, { idArray: { explode: true, style: 'pipeDelimited', paramType: 'array' } })).toEqual({ idArray: undefined }); |
| 232 | + expect(deserializeQueryParams({ idArray: 'idArray=3%7C4%7C5' }, { idArray: { explode: false, style: 'pipeDelimited', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 233 | + // value = object |
| 234 | + expect(deserializeQueryParams({ idObject: 'role=admin&firstName=Alex' }, { idObject: { explode: true, style: 'form', paramType: 'object' } })) |
| 235 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 236 | + expect(deserializeQueryParams({ idObject: 'idObject=role,admin,firstName,Alex' }, { idObject: { explode: false, style: 'form', paramType: 'object' } })) |
| 237 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 238 | + expect(deserializeQueryParams({ idObject: 'should-not-work' }, { idObject: { explode: true, style: 'spaceDelimited', paramType: 'object' } })).toEqual({ idObject: undefined }); |
| 239 | + expect(deserializeQueryParams({ idObject: 'idObject=role%20admin%20firstName%20Alex' }, { idObject: { explode: false, style: 'spaceDelimited', paramType: 'object' } })) |
| 240 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 241 | + expect(deserializeQueryParams({ idObject: 'should-not-work' }, { idObject: { explode: true, style: 'pipeDelimited', paramType: 'object' } })).toEqual({ idObject: undefined }); |
| 242 | + expect(deserializeQueryParams({ idObject: 'idObject=role%7Cadmin%7CfirstName%7CAlex' }, { idObject: { explode: false, style: 'pipeDelimited', paramType: 'object' } })) |
| 243 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 244 | + expect(deserializeQueryParams({ idObject: 'idObject%5Brole%5D=admin&idObject%5BfirstName%5D=Alex' }, { idObject: { explode: true, style: 'deepObject', paramType: 'object' } })) |
| 245 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 246 | + expect(deserializeQueryParams({ idObject: 'should-not-work' }, { idObject: { explode: false, style: 'deepObject', paramType: 'object' } })).toEqual({ idObject: undefined }); |
| 247 | + }); |
| 248 | + |
| 249 | + it('should correctly deserialize path parameters', () => { |
| 250 | + // value = primitive |
| 251 | + expect(deserializePathParams({ idPrimitive: '5' }, { idPrimitive: { explode: true, style: 'simple', paramType: 'primitive' } })).toEqual({ idPrimitive: '5' }); |
| 252 | + expect(deserializePathParams({ idPrimitive: '5' }, { idPrimitive: { explode: false, style: 'simple', paramType: 'primitive' } })).toEqual({ idPrimitive: '5' }); |
| 253 | + expect(deserializePathParams({ idPrimitive: '.5' }, { idPrimitive: { explode: true, style: 'label', paramType: 'primitive' } })).toEqual({ idPrimitive: '5' }); |
| 254 | + expect(deserializePathParams({ idPrimitive: '.5' }, { idPrimitive: { explode: false, style: 'label', paramType: 'primitive' } })).toEqual({ idPrimitive: '5' }); |
| 255 | + expect(deserializePathParams({ idPrimitive: ';idPrimitive=5' }, { idPrimitive: { explode: true, style: 'matrix', paramType: 'primitive' } })).toEqual({ idPrimitive: '5' }); |
| 256 | + expect(deserializePathParams({ idPrimitive: ';idPrimitive=5' }, { idPrimitive: { explode: false, style: 'matrix', paramType: 'primitive' } })).toEqual({ idPrimitive: '5' }); |
| 257 | + // value = array |
| 258 | + expect(deserializePathParams({ idArray: '3,4,5' }, { idArray: { explode: true, style: 'simple', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 259 | + expect(deserializePathParams({ idArray: '3,4,5' }, { idArray: { explode: false, style: 'simple', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 260 | + expect(deserializePathParams({ idArray: '.3.4.5' }, { idArray: { explode: true, style: 'label', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 261 | + expect(deserializePathParams({ idArray: '.3,4,5' }, { idArray: { explode: false, style: 'label', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 262 | + expect(deserializePathParams({ idArray: ';idArray=3;idArray=4;idArray=5' }, { idArray: { explode: true, style: 'matrix', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 263 | + expect(deserializePathParams({ idArray: ';idArray=3,4,5' }, { idArray: { explode: false, style: 'matrix', paramType: 'array' } })).toEqual({ idArray: ['3', '4', '5'] }); |
| 264 | + // value = object |
| 265 | + expect(deserializePathParams({ idObject: 'role=admin,firstName=Alex' }, { idObject: { explode: true, style: 'simple', paramType: 'object' } })) |
| 266 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 267 | + expect(deserializePathParams({ idObject: 'role,admin,firstName,Alex' }, { idObject: { explode: false, style: 'simple', paramType: 'object' } })) |
| 268 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 269 | + expect(deserializePathParams({ idObject: '.role=admin.firstName=Alex' }, { idObject: { explode: true, style: 'label', paramType: 'object' } })) |
| 270 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 271 | + expect(deserializePathParams({ idObject: '.role,admin,firstName,Alex' }, { idObject: { explode: false, style: 'label', paramType: 'object' } })) |
| 272 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 273 | + expect(deserializePathParams({ idObject: ';role=admin;firstName=Alex' }, { idObject: { explode: true, style: 'matrix', paramType: 'object' } })) |
| 274 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 275 | + expect(deserializePathParams({ idObject: ';idObject=role,admin,firstName,Alex' }, { idObject: { explode: false, style: 'matrix', paramType: 'object' } })) |
| 276 | + .toEqual({ idObject: { role: 'admin', firstName: 'Alex' } }); |
| 277 | + }); |
| 278 | +}); |
0 commit comments