diff --git a/packages/wrap/tests/transformRenameInputObjectFields.test.ts b/packages/wrap/tests/transformRenameInputObjectFields.test.ts index 702d08e431a..16f083fd59f 100644 --- a/packages/wrap/tests/transformRenameInputObjectFields.test.ts +++ b/packages/wrap/tests/transformRenameInputObjectFields.test.ts @@ -41,6 +41,74 @@ describe('RenameInputObjectFields', () => { return 'field3'; } }), + new RenameInputObjectFields((typeName, fieldName) => { + if (typeName === 'InputObject' && fieldName === 'field1') { + return 'field0'; + } + }), + ], + }); + + const query = /* GraphQL */ ` + query ($argument: InputObject) { + test(argument: $argument) { + field1 + field2 + } + } + `; + + const result = await execute({ + schema: transformedSchema, + document: parse(query), + variableValues: { argument: { field0: 'field1', field3: 'field2' } }, + }); + if (isIncrementalResult(result)) throw Error('result is incremental'); + assertSome(result.data); + const testData: any = result.data['test']; + expect(testData.field1).toBe('field1'); + expect(testData.field2).toBe('field2'); + }); + + test('renaming with static arguments works', async () => { + const schema = makeExecutableSchema({ + typeDefs: /* GraphQL */ ` + input InputObject { + field1: String + field2: String + } + + type OutputObject { + field1: String + field2: String + } + + type Query { + test(argument: InputObject): OutputObject + } + `, + resolvers: { + Query: { + test: (_root, args) => { + return args.argument; + }, + }, + }, + }); + + const transformedSchema = wrapSchema({ + schema, + transforms: [ + new RenameInputObjectFields((typeName, fieldName) => { + if (typeName === 'InputObject' && fieldName === 'field2') { + return 'field3'; + } + }), + new RenameInputObjectFields((typeName, fieldName) => { + if (typeName === 'InputObject' && fieldName === 'field1') { + return 'field0'; + } + }), ], });