diff --git a/packages/clients/src/helpers/__tests__/marshalling.ts b/packages/clients/src/helpers/__tests__/marshalling.ts index c17bda431..b51702037 100644 --- a/packages/clients/src/helpers/__tests__/marshalling.ts +++ b/packages/clients/src/helpers/__tests__/marshalling.ts @@ -158,6 +158,18 @@ describe('resolveOneOf', () => { ), ).toStrictEqual({}) }) + + it('handles false kind values, like boolean.false', () => { + expect( + resolveOneOf( + [ + { default: undefined, param: 'my_key_1', value: false }, + { default: undefined, param: 'my_key_2', value: true }, + ], + false, + ), + ).toStrictEqual({ my_key_1: false }) + }) }) describe('unmarshalDate', () => { diff --git a/packages/clients/src/helpers/marshalling.ts b/packages/clients/src/helpers/marshalling.ts index c7bc0dd00..f6c3d0fb5 100644 --- a/packages/clients/src/helpers/marshalling.ts +++ b/packages/clients/src/helpers/marshalling.ts @@ -41,9 +41,14 @@ export const resolveOneOf = ( }[], isRequired = false, ): Record => { - const elt = list.find(obj => obj.value) || list.find(obj => obj.default) - const value = elt?.value || elt?.default - if (value) return { [elt.param]: value } + const elt = + list.find(obj => obj.value !== undefined) ?? + list.find(obj => obj.default !== undefined) + const value = elt?.value ?? elt?.default + if (elt && value !== undefined) { + return { [elt.param]: value } + } + if (isRequired) { const keyList = list.map(obj => obj.param).join(' or ') throw new TypeError(`one of ${keyList} must be indicated in the request`)