Skip to content

Commit

Permalink
Add test asserting __token is added when flag is enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
edvinerikson authored and captbaritone committed Jan 23, 2025
1 parent de151c6 commit 8633085
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 3 deletions.
4 changes: 2 additions & 2 deletions compiler/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
==================================== INPUT ====================================
# // enable-token-field: true

fragment RefetchableFragment on NonNodeStory
@refetchable(queryName: "RefetchableFragmentQuery") {
actor {
...ProfilePicture
}
}

fragment ProfilePicture on User {
profilePicture(size: $size) {
uri
}
}
==================================== OUTPUT ===================================
query RefetchableFragmentQuery(
$size: [Int]
$id: ID!
) @__RefetchableDerivedFromMetadata
# RefetchableDerivedFromMetadata(
# FragmentDefinitionName(
# "RefetchableFragment",
# ),
# )
{
fetch__NonNodeStory(input_fetch_id: $id) {
...RefetchableFragment
}
}

fragment ProfilePicture on User {
profilePicture(size: $size) {
uri
}
}

fragment RefetchableFragment on NonNodeStory @refetchable(queryName: "RefetchableFragmentQuery") @__RefetchableMetadata
# RefetchableMetadata {
# operation_name: OperationDefinitionName(
# "RefetchableFragmentQuery",
# ),
# path: [
# "fetch__NonNodeStory",
# ],
# identifier_info: Some(
# RefetchableIdentifierInfo {
# identifier_field: "fetch_id",
# identifier_query_variable_name: "id",
# },
# ),
# }
{
actor {
...ProfilePicture
}
fetch_id
__token
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# // enable-token-field: true

fragment RefetchableFragment on NonNodeStory
@refetchable(queryName: "RefetchableFragmentQuery") {
actor {
...ProfilePicture
}
}

fragment ProfilePicture on User {
profilePicture(size: $size) {
uri
}
}
27 changes: 27 additions & 0 deletions compiler/crates/relay-transforms/tests/refetchable_fragment/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

use fixture_tests::Fixture;
use graphql_test_helpers::apply_transform_for_test;
use relay_transforms::transform_connections;
use relay_transforms::transform_refetchable_fragment;
use relay_transforms::ConnectionInterface;

pub fn transform_fixture(fixture: &Fixture<'_>) -> Result<String, String> {
apply_transform_for_test(fixture, |program| {
let program = transform_connections(program, &ConnectionInterface::default());
let base_fragments = Default::default();
let schema_config = if fixture.content.contains("// enable-token-field: true") {
let mut schema_config: relay_config::SchemaConfig = Default::default();
schema_config.enable_token_field = true;
schema_config
} else {
Default::default()
};
transform_refetchable_fragment(&program, &schema_config, &base_fragments, false)
})
}
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<<63626487811055e17831fb93aee7ca44>>
* @generated SignedSource<<733f08cd406c19e1403b12a718566e81>>
*/

mod refetchable_fragment;
Expand Down Expand Up @@ -68,6 +68,13 @@ async fn fragment_on_non_node_fetchable_type() {
test_fixture(transform_fixture, file!(), "fragment-on-non-node-fetchable-type.graphql", "refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type.expected", input, expected).await;
}

#[tokio::test]
async fn fragment_on_non_node_fetchable_type_with_token_field() {
let input = include_str!("refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type-with-token-field.graphql");
let expected = include_str!("refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type-with-token-field.expected");
test_fixture(transform_fixture, file!(), "fragment-on-non-node-fetchable-type-with-token-field.graphql", "refetchable_fragment/fixtures/fragment-on-non-node-fetchable-type-with-token-field.expected", input, expected).await;
}

#[tokio::test]
async fn fragment_on_object_implementing_node_interface() {
let input = include_str!("refetchable_fragment/fixtures/fragment-on-object-implementing-node-interface.graphql");
Expand Down

0 comments on commit 8633085

Please sign in to comment.