Skip to content

Commit

Permalink
fix provided variables bug in transform
Browse files Browse the repository at this point in the history
Reviewed By: josephsavona

Differential Revision: D32881635

fbshipit-source-id: da7709a47904b1261561fe13f0acce7eaed5b375
  • Loading branch information
mofeiZ authored and facebook-github-bot committed Dec 6, 2021
1 parent 46a4084 commit 390bf1a
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@ query providedVariableInFragment_Query($id: ID!) {
}

fragment providedVariableInFragment_Fragment1 on User
@argumentDefinitions(foo_gk: {type: "Boolean!", provider: "foo_gk_module.js"})
@argumentDefinitions(
foo_gk: {type: "Boolean!", provider: "foo_gk_module.js"}
foobar_gk: {type: "Boolean!", provider: "foobar_gk_module.js"})
{
name @include(if: $foo_gk)
alternate_name @include(if: $foobar_gk)
}

fragment providedVariableInFragment_Fragment2 on User
Expand Down Expand Up @@ -75,6 +78,11 @@ fragment providedVariableInFragment_Fragment2 on User
"kind": "LocalArgument",
"name": "__providedVariableInFragment_Fragment1__foo_gk"
},
{
"defaultValue": null,
"kind": "LocalArgument",
"name": "__providedVariableInFragment_Fragment1__foobar_gk"
},
{
"defaultValue": null,
"kind": "LocalArgument",
Expand Down Expand Up @@ -122,6 +130,20 @@ fragment providedVariableInFragment_Fragment2 on User
}
]
},
{
"condition": "__providedVariableInFragment_Fragment1__foobar_gk",
"kind": "Condition",
"passingValue": true,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "alternate_name",
"storageKey": null
}
]
},
{
"condition": "__providedVariableInFragment_Fragment2__bar_gk",
"kind": "Condition",
Expand Down Expand Up @@ -166,6 +188,7 @@ QUERY:
query providedVariableInFragment_Query(
$id: ID!
$__providedVariableInFragment_Fragment1__foo_gk: Boolean!
$__providedVariableInFragment_Fragment1__foobar_gk: Boolean!
$__providedVariableInFragment_Fragment2__bar_gk: Boolean!
) {
node(id: $id) {
Expand All @@ -178,6 +201,7 @@ query providedVariableInFragment_Query(

fragment providedVariableInFragment_Fragment1 on User {
name @include(if: $__providedVariableInFragment_Fragment1__foo_gk)
alternate_name @include(if: $__providedVariableInFragment_Fragment1__foobar_gk)
}

fragment providedVariableInFragment_Fragment2 on User {
Expand All @@ -190,6 +214,10 @@ fragment providedVariableInFragment_Fragment2 on User {
{
"kind": "RootArgument",
"name": "__providedVariableInFragment_Fragment1__foo_gk"
},
{
"kind": "RootArgument",
"name": "__providedVariableInFragment_Fragment1__foobar_gk"
}
],
"kind": "Fragment",
Expand All @@ -209,6 +237,20 @@ fragment providedVariableInFragment_Fragment2 on User {
"storageKey": null
}
]
},
{
"condition": "__providedVariableInFragment_Fragment1__foobar_gk",
"kind": "Condition",
"passingValue": true,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "alternate_name",
"storageKey": null
}
]
}
],
"type": "User",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@ query providedVariableInFragment_Query($id: ID!) {
}

fragment providedVariableInFragment_Fragment1 on User
@argumentDefinitions(foo_gk: {type: "Boolean!", provider: "foo_gk_module.js"})
@argumentDefinitions(
foo_gk: {type: "Boolean!", provider: "foo_gk_module.js"}
foobar_gk: {type: "Boolean!", provider: "foobar_gk_module.js"})
{
name @include(if: $foo_gk)
alternate_name @include(if: $foobar_gk)
}

fragment providedVariableInFragment_Fragment2 on User
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,7 @@ impl ApplyFragmentArgumentsTransform<'_, '_, '_> {
});
for definition in provided_arguments {
self.provided_variables
.insert(fragment.name.item, definition.clone());
.insert(definition.name.item, definition.clone());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ use itertools::Itertools;
/// [provided_variable_name] --> __[fragment_name]__[provided_variable_name]
/// - Remove provided variables from (local) argument definitions
/// - Add provided variables to list of used global variables
/// apply_fragment_arguments depends on provide_variable_fragment_transform
pub fn provided_variable_fragment_transform(program: &Program) -> Program {
let mut transform = ProvidedVariableFragmentTransform::new();
transform
Expand Down

0 comments on commit 390bf1a

Please sign in to comment.