Skip to content

Commit d5506ca

Browse files
evanyeungmeta-codesync[bot]
authored andcommitted
Test to show @refetchable preferFetchable boolean value being ignored
Reviewed By: captbaritone Differential Revision: D95477936 fbshipit-source-id: 72eba026098727d9c52d0bf3b9bec0ba09d33c7f
1 parent f612d76 commit d5506ca

3 files changed

Lines changed: 59 additions & 1 deletion

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
==================================== INPUT ====================================
2+
# When a type implements both Node and @fetchable, setting
3+
# preferFetchable: false should use the Node refetch strategy
4+
# (same as omitting the argument). Before the fix, the boolean
5+
# value was ignored and presence alone triggered fetchable-preferred.
6+
fragment RefetchableFragment on FetchableType
7+
@refetchable(queryName: "RefetchableFragmentQuery", preferFetchable: false) {
8+
fetch_id
9+
}
10+
==================================== OUTPUT ===================================
11+
query RefetchableFragmentQuery(
12+
$id: ID!
13+
) @__RefetchableDerivedFromMetadata
14+
# RefetchableDerivedFromMetadata(
15+
# FragmentDefinitionName(
16+
# "RefetchableFragment",
17+
# ),
18+
# )
19+
{
20+
fetch__FetchableType(fetch_id: $id) {
21+
...RefetchableFragment
22+
}
23+
}
24+
25+
fragment RefetchableFragment on FetchableType @refetchable(queryName: "RefetchableFragmentQuery", preferFetchable: false) @__RefetchableMetadata
26+
# RefetchableMetadata {
27+
# operation_name: OperationDefinitionName(
28+
# "RefetchableFragmentQuery",
29+
# ),
30+
# path: [
31+
# "fetch__FetchableType",
32+
# ],
33+
# identifier_info: Some(
34+
# RefetchableIdentifierInfo {
35+
# identifier_field: "fetch_id",
36+
# identifier_query_variable_name: "id",
37+
# },
38+
# ),
39+
# is_prefetchable_pagination: false,
40+
# }
41+
{
42+
fetch_id
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# When a type implements both Node and @fetchable, setting
2+
# preferFetchable: false should use the Node refetch strategy
3+
# (same as omitting the argument). Before the fix, the boolean
4+
# value was ignored and presence alone triggered fetchable-preferred.
5+
fragment RefetchableFragment on FetchableType
6+
@refetchable(queryName: "RefetchableFragmentQuery", preferFetchable: false) {
7+
fetch_id
8+
}

compiler/crates/relay-transforms/tests/refetchable_fragment_test.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This source code is licensed under the MIT license found in the
55
* LICENSE file in the root directory of this source tree.
66
*
7-
* @generated SignedSource<<b5ce6ba653f419089b892dcdd3b4b32d>>
7+
* @generated SignedSource<<174358d8fb5b8abb9eb20e7994daa41e>>
88
*/
99

1010
mod refetchable_fragment;
@@ -228,3 +228,10 @@ async fn refetchable_interface_some_types_impl_node() {
228228
let expected = include_str!("refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected");
229229
test_fixture(transform_fixture, file!(), "refetchable-interface-some-types-impl-node.graphql", "refetchable_fragment/fixtures/refetchable-interface-some-types-impl-node.expected", input, expected).await;
230230
}
231+
232+
#[tokio::test]
233+
async fn refetchable_prefer_fetchable_false_uses_node() {
234+
let input = include_str!("refetchable_fragment/fixtures/refetchable-prefer-fetchable-false-uses-node.graphql");
235+
let expected = include_str!("refetchable_fragment/fixtures/refetchable-prefer-fetchable-false-uses-node.expected");
236+
test_fixture(transform_fixture, file!(), "refetchable-prefer-fetchable-false-uses-node.graphql", "refetchable_fragment/fixtures/refetchable-prefer-fetchable-false-uses-node.expected", input, expected).await;
237+
}

0 commit comments

Comments
 (0)