From c4547f9a0fd41c28851490d2ba499e0f30831175 Mon Sep 17 00:00:00 2001 From: Andrey Lunyov Date: Wed, 4 Dec 2019 13:37:35 -0800 Subject: [PATCH] DissalowIDAsAlias on nested fields Reviewed By: kassens Differential Revision: D18816334 fbshipit-source-id: e08ae96ae53bc5ea4edceba09303bd07c4725e3d --- .../compileRelayArtifacts-test.js.snap | 55 ++++++++++++------- .../id-as-alias.invalid.graphql | 10 ++++ .../is-as-alias.invalid.graphql | 4 -- .../transforms/DisallowIdAsAlias.js | 2 +- 4 files changed, 46 insertions(+), 25 deletions(-) create mode 100644 packages/relay-compiler/codegen/__tests__/fixtures/compileRelayArtifacts/id-as-alias.invalid.graphql delete mode 100644 packages/relay-compiler/codegen/__tests__/fixtures/compileRelayArtifacts/is-as-alias.invalid.graphql diff --git a/packages/relay-compiler/codegen/__tests__/__snapshots__/compileRelayArtifacts-test.js.snap b/packages/relay-compiler/codegen/__tests__/__snapshots__/compileRelayArtifacts-test.js.snap index 70c842ce284c8..24f51c22f7686 100644 --- a/packages/relay-compiler/codegen/__tests__/__snapshots__/compileRelayArtifacts-test.js.snap +++ b/packages/relay-compiler/codegen/__tests__/__snapshots__/compileRelayArtifacts-test.js.snap @@ -9473,6 +9473,41 @@ Fragment { } `; +exports[`compileRelayArtifacts matches expected output: id-as-alias.invalid.graphql 1`] = ` +~~~~~~~~~~ INPUT ~~~~~~~~~~ +# expected-to-throw +fragment User_fragment on User { + id: name +} + +fragment ProfilePicture on User { + profilePicture(size: $size) { + id: uri + } +} + +~~~~~~~~~~ OUTPUT ~~~~~~~~~~ +THROWN EXCEPTION: + +Encountered 2 errors: +- Relay does not allow aliasing fields to \`id\`. This name is reserved for the globally unique \`id\` field on \`Node\`. + + Source: GraphQL request (3:3) + 2: fragment User_fragment on User { + 3: id: name + ^ + 4: } + +- Relay does not allow aliasing fields to \`id\`. This name is reserved for the globally unique \`id\` field on \`Node\`. + + Source: GraphQL request (8:5) + 7: profilePicture(size: $size) { + 8: id: uri + ^ + 9: } + +`; + exports[`compileRelayArtifacts matches expected output: inline-and-mask-are-incompatible.invalid.graphql 1`] = ` ~~~~~~~~~~ INPUT ~~~~~~~~~~ # expected-to-throw @@ -9896,26 +9931,6 @@ Source: GraphQL request (17:24) `; -exports[`compileRelayArtifacts matches expected output: is-as-alias.invalid.graphql 1`] = ` -~~~~~~~~~~ INPUT ~~~~~~~~~~ -# expected-to-throw -fragment User_fragment on User { - id: name -} - -~~~~~~~~~~ OUTPUT ~~~~~~~~~~ -THROWN EXCEPTION: - -Relay does not allow aliasing fields to \`id\`. This name is reserved for the globally unique \`id\` field on \`Node\`. - -Source: GraphQL request (3:3) -2: fragment User_fragment on User { -3: id: name - ^ -4: } - -`; - exports[`compileRelayArtifacts matches expected output: kitchen-sink.graphql 1`] = ` ~~~~~~~~~~ INPUT ~~~~~~~~~~ query NodeQuery($id: ID!, $cond: Boolean!, $PictureSize: [Int]!) { diff --git a/packages/relay-compiler/codegen/__tests__/fixtures/compileRelayArtifacts/id-as-alias.invalid.graphql b/packages/relay-compiler/codegen/__tests__/fixtures/compileRelayArtifacts/id-as-alias.invalid.graphql new file mode 100644 index 0000000000000..74929f1422ef6 --- /dev/null +++ b/packages/relay-compiler/codegen/__tests__/fixtures/compileRelayArtifacts/id-as-alias.invalid.graphql @@ -0,0 +1,10 @@ +# expected-to-throw +fragment User_fragment on User { + id: name +} + +fragment ProfilePicture on User { + profilePicture(size: $size) { + id: uri + } +} diff --git a/packages/relay-compiler/codegen/__tests__/fixtures/compileRelayArtifacts/is-as-alias.invalid.graphql b/packages/relay-compiler/codegen/__tests__/fixtures/compileRelayArtifacts/is-as-alias.invalid.graphql deleted file mode 100644 index d524a8a50136e..0000000000000 --- a/packages/relay-compiler/codegen/__tests__/fixtures/compileRelayArtifacts/is-as-alias.invalid.graphql +++ /dev/null @@ -1,4 +0,0 @@ -# expected-to-throw -fragment User_fragment on User { - id: name -} diff --git a/packages/relay-compiler/transforms/DisallowIdAsAlias.js b/packages/relay-compiler/transforms/DisallowIdAsAlias.js index c052e55304dc4..0eb113959119b 100644 --- a/packages/relay-compiler/transforms/DisallowIdAsAlias.js +++ b/packages/relay-compiler/transforms/DisallowIdAsAlias.js @@ -28,7 +28,7 @@ function visitField(field: T): T { [field.loc], ); } - return field; + return this.traverse(field); } /**