From 1fed98c52232567ba2892af4e2aaa6c21ff3cb6f Mon Sep 17 00:00:00 2001 From: David Levine Date: Mon, 13 Feb 2023 21:01:31 +0000 Subject: [PATCH] feat: deprecate `FormField.id` in favor of `databaseId` --- docs/form-field-support.md | 2 +- docs/querying-entries.md | 8 ++++---- docs/querying-formfields.md | 9 +++++---- docs/querying-forms.md | 4 ++-- src/Type/WPInterface/FormField.php | 8 +++++++- tests/_support/TestCase/FormFieldTestCase.php | 2 +- tests/wpunit/CaptchaFieldTest.php | 1 - tests/wpunit/EntryQueriesTest.php | 2 ++ tests/wpunit/ProductCalculationFieldTest.php | 1 - tests/wpunit/ProductHiddenFieldTest.php | 1 - tests/wpunit/ProductPriceFieldTest.php | 1 - tests/wpunit/ProductRadioFieldTest.php | 1 - tests/wpunit/ProductSelectFieldTest.php | 1 - tests/wpunit/ProductSingleFieldTest.php | 1 - tests/wpunit/SubmitFormMutationTest.php | 14 +++++++------- 15 files changed, 29 insertions(+), 27 deletions(-) diff --git a/docs/form-field-support.md b/docs/form-field-support.md index ae8361fd..0618d4ca 100644 --- a/docs/form-field-support.md +++ b/docs/form-field-support.md @@ -118,7 +118,7 @@ For an example of the PostCategory field: gfEntries{ formFields { nodes { - id + databaseId ... on PostCategoryField { # the Interface hasAllCategories inputType diff --git a/docs/querying-entries.md b/docs/querying-entries.md index 35a0d4b8..6da2e5ef 100644 --- a/docs/querying-entries.md +++ b/docs/querying-entries.md @@ -24,7 +24,7 @@ The `id` input accepts either the Gravity Forms Entry ID ( `idType: DATABASE_ID` isDraft formFields(first: 300) { nodes { - id + databaseId type ... on TextField { label @@ -47,7 +47,7 @@ The `id` input accepts either the Gravity Forms Entry ID ( `idType: DATABASE_ID` isStarred formFields(first: 300) { nodes { - id + databaseId type ... on TextField { label @@ -74,7 +74,7 @@ Entries that include [Pricing Fields](https://docs.gravityforms.com/category/use items { connectedFormField { ... on ProductSingleField { - id + databaseId } } currency @@ -90,7 +90,7 @@ Entries that include [Pricing Fields](https://docs.gravityforms.com/category/use options { connectedFormField{ ... on OptionCheckboxField { - id + databaseId } } fieldLabel diff --git a/docs/querying-formfields.md b/docs/querying-formfields.md index 581fac2c..7ddb13f1 100644 --- a/docs/querying-formfields.md +++ b/docs/querying-formfields.md @@ -20,7 +20,7 @@ This method is best if you have a small form with a limited number of field type databaseId formFields(first: 300) { nodes { - id + databaseId type cssClass ... on TextField { @@ -65,7 +65,7 @@ Luckily, we can use [GraphQL Interfaces](https://graphql.org/learn/schema/#inter databaseId formFields(where: {pageNumber: 1}) { nodes { - id + databaseId inputType type ... on GfFieldWithLabelSetting { @@ -185,10 +185,11 @@ The code comments in the example query below explain how you can get a filtered # Filter form fields by the page number in multi-page forms. pageNumber: 2 } - ) { + ) { nodes { - id + databaseId type + } } } } diff --git a/docs/querying-forms.md b/docs/querying-forms.md index 4d3da573..94155f81 100644 --- a/docs/querying-forms.md +++ b/docs/querying-forms.md @@ -16,7 +16,7 @@ The `id` input accepts either the Gravity Forms form ID (`idType: DATABASE_ID`) dateCreated formFields { nodes { - id + databaseId type ... on TextField { label @@ -71,7 +71,7 @@ The code comments in the example query below shows how you can fetch and filter formFields(first: 300) { nodes { type - id + databaseId cssClass ... on TextField { label diff --git a/src/Type/WPInterface/FormField.php b/src/Type/WPInterface/FormField.php index 1b6aa2b1..ab0b8168 100644 --- a/src/Type/WPInterface/FormField.php +++ b/src/Type/WPInterface/FormField.php @@ -60,8 +60,14 @@ public static function get_fields() : array { 'resolve' => static fn ( $source ) : bool => ! empty( $source->displayOnly ), ], 'id' => [ + 'type' => [ 'non_null' => 'Int' ], + 'description' => __( 'Field database ID.', 'wp-graphql-gravity-forms' ), + 'deprecationReason' => __( 'This field will be changing to return a Global ID in a future release. Future-proof your code and use databaseId instead.', 'wp-graphql-gravity-forms' ), + ], + 'databaseId' => [ 'type' => [ 'non_null' => 'Int' ], - 'description' => __( 'Field ID.', 'wp-graphql-gravity-forms' ), + 'description' => __( 'Field database ID.', 'wp-graphql-gravity-forms' ), + 'resolve' => static fn ( $source ) : int => absint( $source->id ), ], 'inputType' => [ 'type' => FormFieldTypeEnum::$type, diff --git a/tests/_support/TestCase/FormFieldTestCase.php b/tests/_support/TestCase/FormFieldTestCase.php index 54c16148..0a85de6c 100644 --- a/tests/_support/TestCase/FormFieldTestCase.php +++ b/tests/_support/TestCase/FormFieldTestCase.php @@ -250,7 +250,7 @@ protected function entry_query() : string { formFields { nodes { displayOnly - id + databaseId inputType layoutGridColumnSpan layoutSpacerGridColumnSpan diff --git a/tests/wpunit/CaptchaFieldTest.php b/tests/wpunit/CaptchaFieldTest.php index 747feb28..1cd16f6b 100644 --- a/tests/wpunit/CaptchaFieldTest.php +++ b/tests/wpunit/CaptchaFieldTest.php @@ -135,7 +135,6 @@ public function field_query() : string { return ' ... on CaptchaField { displayOnly - id inputType layoutGridColumnSpan layoutSpacerGridColumnSpan diff --git a/tests/wpunit/EntryQueriesTest.php b/tests/wpunit/EntryQueriesTest.php index f062fff0..1f37d3ce 100644 --- a/tests/wpunit/EntryQueriesTest.php +++ b/tests/wpunit/EntryQueriesTest.php @@ -88,6 +88,7 @@ private function get_entry_query() : string { formFields { nodes { id + databaseId } } id @@ -285,6 +286,7 @@ public function expected_field_response( array $entry, array $form ) : array { 'nodes', [ $this->expectedField( 'id', (int) $form['fields'][0]['id'] ), + $this->expectedField( 'databaseId', (int) $form['fields'][0]['id'] ), ] ), ] diff --git a/tests/wpunit/ProductCalculationFieldTest.php b/tests/wpunit/ProductCalculationFieldTest.php index f7d14619..3ec4bf9a 100644 --- a/tests/wpunit/ProductCalculationFieldTest.php +++ b/tests/wpunit/ProductCalculationFieldTest.php @@ -157,7 +157,6 @@ public function field_query():string { description descriptionPlacement displayOnly - id inputName inputType label diff --git a/tests/wpunit/ProductHiddenFieldTest.php b/tests/wpunit/ProductHiddenFieldTest.php index 1dd083d4..5c717f39 100644 --- a/tests/wpunit/ProductHiddenFieldTest.php +++ b/tests/wpunit/ProductHiddenFieldTest.php @@ -144,7 +144,6 @@ public function field_query():string { description descriptionPlacement displayOnly - id inputName inputType label diff --git a/tests/wpunit/ProductPriceFieldTest.php b/tests/wpunit/ProductPriceFieldTest.php index 04430154..658c58dd 100644 --- a/tests/wpunit/ProductPriceFieldTest.php +++ b/tests/wpunit/ProductPriceFieldTest.php @@ -122,7 +122,6 @@ public function field_query():string { description descriptionPlacement displayOnly - id inputName inputType label diff --git a/tests/wpunit/ProductRadioFieldTest.php b/tests/wpunit/ProductRadioFieldTest.php index d2c66782..2b82c3ea 100644 --- a/tests/wpunit/ProductRadioFieldTest.php +++ b/tests/wpunit/ProductRadioFieldTest.php @@ -146,7 +146,6 @@ public function field_query():string { description descriptionPlacement displayOnly - id inputName inputType label diff --git a/tests/wpunit/ProductSelectFieldTest.php b/tests/wpunit/ProductSelectFieldTest.php index 70320294..a86feadc 100644 --- a/tests/wpunit/ProductSelectFieldTest.php +++ b/tests/wpunit/ProductSelectFieldTest.php @@ -148,7 +148,6 @@ public function field_query():string { description descriptionPlacement displayOnly - id inputName inputType label diff --git a/tests/wpunit/ProductSingleFieldTest.php b/tests/wpunit/ProductSingleFieldTest.php index 863b5963..043a3641 100644 --- a/tests/wpunit/ProductSingleFieldTest.php +++ b/tests/wpunit/ProductSingleFieldTest.php @@ -145,7 +145,6 @@ public function field_query():string { description descriptionPlacement displayOnly - id inputName inputType label diff --git a/tests/wpunit/SubmitFormMutationTest.php b/tests/wpunit/SubmitFormMutationTest.php index d19996f7..8facc122 100644 --- a/tests/wpunit/SubmitFormMutationTest.php +++ b/tests/wpunit/SubmitFormMutationTest.php @@ -670,7 +670,7 @@ public function testSubmitWithOrderItems() : void { $this->assertEquals( 'USD', $actual['data']['submitGfForm']['entry']['orderSummary']['currency'] ); // Test first Order Item. - $this->assertEquals( $fields[0]->id, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][0]['connectedFormField']['id'] ); + $this->assertEquals( $fields[0]->id, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][0]['connectedFormField']['databaseId'] ); $this->assertEquals( 'USD', $actual['data']['submitGfForm']['entry']['orderSummary']['items'][0]['currency'] ); $this->assertStringContainsString( $actual['data']['submitGfForm']['entry']['orderSummary']['items'][0]['price'], $fields[0]->basePrice ); $this->assertEquals( 2, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][0]['quantity'] ); @@ -678,13 +678,13 @@ public function testSubmitWithOrderItems() : void { $this->assertEquals( $expected_subtotal_one, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][0]['subtotal'] ); // Test second Order Item. - $this->assertEquals( $fields[1]->id, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['connectedFormField']['id'] ); + $this->assertEquals( $fields[1]->id, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['connectedFormField']['databaseId'] ); $this->assertEquals( 'USD', $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['currency'] ); $this->assertStringContainsString( $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['price'], $fields[1]->basePrice ); $this->assertEquals( 2, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['quantity'] ); // Test options. $this->assertNotEmpty( $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['options'] ); - $this->assertEquals( $fields[3]->id, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['options'][0]['connectedFormField']['id'] ); + $this->assertEquals( $fields[3]->id, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['options'][0]['connectedFormField']['databaseId'] ); $this->assertEquals( $fields[3]->label, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['options'][0]['fieldLabel'] ); $this->assertEquals( $fields[3]->choices[0]['value'], $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['options'][0]['name'] ); $this->assertEquals( $fields[3]->label . ': ' . $fields[3]->choices[0]['value'], $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['options'][0]['optionLabel'] ); @@ -699,7 +699,7 @@ public function testSubmitWithOrderItems() : void { $this->assertEquals( $expected_subtotal_two, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][1]['subtotal'] ); // Test shipping field. - $this->assertEquals( $fields[4]->id, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][2]['connectedFormField']['id'] ); + $this->assertEquals( $fields[4]->id, $actual['data']['submitGfForm']['entry']['orderSummary']['items'][2]['connectedFormField']['databaseId'] ); $this->assertEquals( 'USD', $actual['data']['submitGfForm']['entry']['orderSummary']['items'][2]['currency'] ); $this->assertStringContainsString( $actual['data']['submitGfForm']['entry']['orderSummary']['items'][2]['price'], $fields[4]->basePrice ); $this->assertTrue( $actual['data']['submitGfForm']['entry']['orderSummary']['items'][2]['isShipping'] ); @@ -793,8 +793,8 @@ public function submit_mutation() : string { orderSummary{ currency items{ - connectedFormField{ - id + connectedFormField { + databaseId } currency description @@ -808,7 +808,7 @@ public function submit_mutation() : string { name options{ connectedFormField { - id + databaseId } fieldLabel name