From 138188b0f9c9bb4c2f7d000143c99908d8c47b4b Mon Sep 17 00:00:00 2001
From: Trevor Scheer <trevor.scheer@gmail.com>
Date: Fri, 3 Sep 2021 15:07:47 -0700
Subject: [PATCH 1/3] Demonstrate issue with failing test

---
 src/type/__tests__/definition-test.ts | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/type/__tests__/definition-test.ts b/src/type/__tests__/definition-test.ts
index 1cf4e4f397..66600dc84b 100644
--- a/src/type/__tests__/definition-test.ts
+++ b/src/type/__tests__/definition-test.ts
@@ -818,6 +818,22 @@ describe('Type System: Input Objects', () => {
       );
     });
   });
+
+  describe('Deprecation reason is preserved on fields', () => {
+    const inputObjType = new GraphQLInputObjectType({
+      name: 'SomeInputObject',
+      fields: {
+        deprecatedField: {
+          type: ScalarType,
+          deprecationReason: 'not used anymore',
+        },
+      },
+    });
+    const config = inputObjType.toConfig();
+    expect(config.fields.deprecatedField.deprecationReason).to.equal(
+      'not used anymore',
+    );
+  });
 });
 
 describe('Type System: List', () => {

From 6ae37e5c695f059ae7991673aa16ae09be628593 Mon Sep 17 00:00:00 2001
From: Trevor Scheer <trevor.scheer@gmail.com>
Date: Fri, 3 Sep 2021 15:08:24 -0700
Subject: [PATCH 2/3] Include deprecationReason when capturing fields in
 toConfig()

---
 src/type/definition.ts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/type/definition.ts b/src/type/definition.ts
index 6e5f0fe409..c93148aaed 100644
--- a/src/type/definition.ts
+++ b/src/type/definition.ts
@@ -1650,6 +1650,7 @@ export class GraphQLInputObjectType {
       defaultValue: field.defaultValue,
       extensions: field.extensions,
       astNode: field.astNode,
+      deprecationReason: field.deprecationReason,
     }));
 
     return {

From 61dfa054f3283954193fe37a993bec708a1618ae Mon Sep 17 00:00:00 2001
From: Ivan Goncharov <ivan.goncharov.ua@gmail.com>
Date: Mon, 6 Sep 2021 07:03:15 +0300
Subject: [PATCH 3/3] review changes

---
 src/type/__tests__/definition-test.ts | 6 +++---
 src/type/definition.ts                | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/type/__tests__/definition-test.ts b/src/type/__tests__/definition-test.ts
index 66600dc84b..7011937c97 100644
--- a/src/type/__tests__/definition-test.ts
+++ b/src/type/__tests__/definition-test.ts
@@ -819,7 +819,7 @@ describe('Type System: Input Objects', () => {
     });
   });
 
-  describe('Deprecation reason is preserved on fields', () => {
+  it('Deprecation reason is preserved on fields', () => {
     const inputObjType = new GraphQLInputObjectType({
       name: 'SomeInputObject',
       fields: {
@@ -829,8 +829,8 @@ describe('Type System: Input Objects', () => {
         },
       },
     });
-    const config = inputObjType.toConfig();
-    expect(config.fields.deprecatedField.deprecationReason).to.equal(
+    expect(inputObjType.toConfig()).to.have.nested.property(
+      'fields.deprecatedField.deprecationReason',
       'not used anymore',
     );
   });
diff --git a/src/type/definition.ts b/src/type/definition.ts
index c93148aaed..42b2b42a30 100644
--- a/src/type/definition.ts
+++ b/src/type/definition.ts
@@ -1648,9 +1648,9 @@ export class GraphQLInputObjectType {
       description: field.description,
       type: field.type,
       defaultValue: field.defaultValue,
+      deprecationReason: field.deprecationReason,
       extensions: field.extensions,
       astNode: field.astNode,
-      deprecationReason: field.deprecationReason,
     }));
 
     return {