Skip to content

Commit

Permalink
Example with missing validation error for a required field argument o…
Browse files Browse the repository at this point in the history
…n the resolver field (#4512)

Summary:
The variable $scale is not defined on the query.

Pull Request resolved: #4512

Reviewed By: monicatang

Differential Revision: D50972592

Pulled By: alunyov

fbshipit-source-id: 8408fcb17f5be918da2f6a15b12b10e879279836
  • Loading branch information
alunyov authored and facebook-github-bot committed Nov 3, 2023
1 parent 6b89a29 commit 8fc5000
Show file tree
Hide file tree
Showing 3 changed files with 260 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
==================================== INPUT ====================================
fragment relayResolverWithArgsFragmentSpread_PopStarNameResolverFragment_name on ClientType @argumentDefinitions(scale: {type: "Float!"}) {
name
profile_picture(scale: $scale)
}

query relayResolverWithArgsFragmentSpread_Query {
...relayResolverWithArgsFragmentSpread_Fragment
}

fragment relayResolverWithArgsFragmentSpread_Fragment on Query {
pop_star {
pop_star_name(scale: $scale)
}
}


# %extensions%

type ClientType {
name: String
profile_picture(scale: Float!): String
pop_star_name(scale: Float!): String @relay_resolver(fragment_name: "relayResolverWithArgsFragmentSpread_PopStarNameResolverFragment_name", import_path: "./path/to/PopStarNameResolver.js", , import_name: "pop_star_name")
}

extend type Query {
pop_star: ClientType @relay_resolver(import_path: "./path/to/PopStarNameResolver.js", import_name: "pop_star")
}
==================================== OUTPUT ===================================
{
"fragment": {
"argumentDefinitions": [],
"kind": "Fragment",
"metadata": null,
"name": "relayResolverWithArgsFragmentSpread_Query",
"selections": [
{
"args": null,
"kind": "FragmentSpread",
"name": "relayResolverWithArgsFragmentSpread_Fragment"
}
],
"type": "Query",
"abstractKey": null
},
"kind": "Request",
"operation": {
"argumentDefinitions": [],
"kind": "Operation",
"name": "relayResolverWithArgsFragmentSpread_Query",
"selections": [
{
"kind": "ClientEdgeToClientObject",
"backingField": {
"name": "pop_star",
"args": null,
"fragment": null,
"kind": "RelayResolver",
"storageKey": null,
"isOutputType": false
},
"linkedField": {
"alias": null,
"args": null,
"concreteType": "ClientType",
"kind": "LinkedField",
"name": "pop_star",
"plural": false,
"selections": [
{
"name": "pop_star_name",
"args": null,
"fragment": {
"kind": "InlineFragment",
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": [
{
"kind": "Variable",
"name": "scale",
"variableName": "scale"
}
],
"kind": "ScalarField",
"name": "profile_picture",
"storageKey": null
}
],
"type": "ClientType",
"abstractKey": null
},
"kind": "RelayResolver",
"storageKey": null,
"isOutputType": false
}
],
"storageKey": null
}
}
]
},
"params": {
"cacheID": "94508dc2526a8b7563266e5349ed2265",
"id": null,
"metadata": {},
"name": "relayResolverWithArgsFragmentSpread_Query",
"operationKind": "query",
"text": null
}
}

QUERY:

Query Text is Empty.

{
"argumentDefinitions": [
{
"kind": "RootArgument",
"name": "scale"
}
],
"kind": "Fragment",
"metadata": {
"hasClientEdges": true
},
"name": "relayResolverWithArgsFragmentSpread_Fragment",
"selections": [
{
"kind": "ClientEdgeToClientObject",
"concreteType": "ClientType",
"backingField": {
"alias": null,
"args": null,
"fragment": null,
"kind": "RelayResolver",
"name": "pop_star",
"resolverModule": require('PopStarNameResolver').pop_star,
"path": "pop_star"
},
"linkedField": {
"alias": null,
"args": null,
"concreteType": "ClientType",
"kind": "LinkedField",
"name": "pop_star",
"plural": false,
"selections": [
{
"alias": null,
"args": [],
"fragment": {
"args": [
{
"kind": "Variable",
"name": "scale",
"variableName": "scale"
}
],
"kind": "FragmentSpread",
"name": "relayResolverWithArgsFragmentSpread_PopStarNameResolverFragment_name"
},
"kind": "RelayResolver",
"name": "pop_star_name",
"resolverModule": require('PopStarNameResolver').pop_star_name,
"path": "pop_star.pop_star_name"
}
],
"storageKey": null
}
}
],
"type": "Query",
"abstractKey": null
}

{
"argumentDefinitions": [
{
"defaultValue": null,
"kind": "LocalArgument",
"name": "scale"
}
],
"kind": "Fragment",
"metadata": null,
"name": "relayResolverWithArgsFragmentSpread_PopStarNameResolverFragment_name",
"selections": [
{
"kind": "ClientExtension",
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": [
{
"kind": "Variable",
"name": "scale",
"variableName": "scale"
}
],
"kind": "ScalarField",
"name": "profile_picture",
"storageKey": null
}
]
}
],
"type": "ClientType",
"abstractKey": null
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
fragment relayResolverWithArgsFragmentSpread_PopStarNameResolverFragment_name on ClientType @argumentDefinitions(scale: {type: "Float!"}) {
name
profile_picture(scale: $scale)
}

query relayResolverWithArgsFragmentSpread_Query {
...relayResolverWithArgsFragmentSpread_Fragment
}

fragment relayResolverWithArgsFragmentSpread_Fragment on Query {
pop_star {
pop_star_name(scale: $scale)
}
}


# %extensions%

type ClientType {
name: String
profile_picture(scale: Float!): String
pop_star_name(scale: Float!): String @relay_resolver(fragment_name: "relayResolverWithArgsFragmentSpread_PopStarNameResolverFragment_name", import_path: "./path/to/PopStarNameResolver.js", , import_name: "pop_star_name")
}

extend type Query {
pop_star: ClientType @relay_resolver(import_path: "./path/to/PopStarNameResolver.js", import_name: "pop_star")
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<3ed14fc48e8c146f608dbd13c65f89d7>>
* @generated SignedSource<<543023a93cfd81f327040c9b43f96de3>>
*/

mod compile_relay_artifacts;
Expand Down Expand Up @@ -1223,6 +1223,13 @@ async fn relay_resolver_with_args_and_alias_no_fragment() {
test_fixture(transform_fixture, "relay-resolver-with-args-and-alias-no-fragment.graphql", "compile_relay_artifacts/fixtures/relay-resolver-with-args-and-alias-no-fragment.expected", input, expected).await;
}

#[tokio::test]
async fn relay_resolver_with_args_fragment_spread() {
let input = include_str!("compile_relay_artifacts/fixtures/relay-resolver-with-args-fragment-spread.graphql");
let expected = include_str!("compile_relay_artifacts/fixtures/relay-resolver-with-args-fragment-spread.expected");
test_fixture(transform_fixture, "relay-resolver-with-args-fragment-spread.graphql", "compile_relay_artifacts/fixtures/relay-resolver-with-args-fragment-spread.expected", input, expected).await;
}

#[tokio::test]
async fn relay_resolver_with_fragment_on_client_type() {
let input = include_str!("compile_relay_artifacts/fixtures/relay-resolver-with-fragment-on-client-type.graphql");
Expand Down

0 comments on commit 8fc5000

Please sign in to comment.