Skip to content

Commit c70d931

Browse files
authored
Merge pull request #105 from mathstuf/inline-fragment-fields
Improve fragment support
2 parents a2b6bbd + 112126d commit c70d931

File tree

4 files changed

+47
-2
lines changed

4 files changed

+47
-2
lines changed

graphql_client_codegen/src/shared.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,11 @@ pub(crate) fn response_fields_for_selection(
132132
let type_name = Ident::new(&fragment.fragment_name, Span::call_site());
133133
Ok(quote!{
134134
#[serde(flatten)]
135-
#field_name: #type_name
135+
pub #field_name: #type_name
136136
})
137137
}
138138
SelectionItem::InlineFragment(_) => {
139-
Err(format_err!("inline fragment on object field"))?
139+
Err(format_err!("unimplemented: inline fragment on object field"))?
140140
}
141141
})
142142
.filter(|x| match x {

tests/fragments.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#[macro_use]
2+
extern crate graphql_client;
3+
extern crate serde;
4+
#[macro_use]
5+
extern crate serde_derive;
6+
#[macro_use]
7+
extern crate serde_json;
8+
9+
#[derive(GraphQLQuery)]
10+
#[graphql(
11+
query_path = "tests/fragments/query.graphql",
12+
schema_path = "tests/fragments/schema.graphql"
13+
)]
14+
#[allow(dead_code)]
15+
struct FragmentReference;
16+
17+
#[test]
18+
fn fragment_reference() {
19+
let valid_response = json!({
20+
"inFragment": "value",
21+
});
22+
23+
let valid_fragment_reference =
24+
serde_json::from_value::<fragment_reference::ResponseData>(valid_response).unwrap();
25+
26+
assert_eq!(
27+
valid_fragment_reference.fragment_reference.in_fragment.unwrap(),
28+
"value"
29+
);
30+
}

tests/fragments/query.graphql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fragment FragmentReference on QueryRoot {
2+
inFragment
3+
}
4+
5+
query FragmentReference {
6+
...FragmentReference
7+
}

tests/fragments/schema.graphql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
schema {
2+
query: QueryRoot
3+
}
4+
5+
type QueryRoot {
6+
extra: String
7+
inFragment: String
8+
}

0 commit comments

Comments
 (0)