Skip to content

Commit d8b07e8

Browse files
committed
Implement __typename for GraphQL objects
Fixes #22.
1 parent d87c6e4 commit d8b07e8

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/macros/object.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,10 @@ macro_rules! graphql_object {
378378
mt.into_meta()
379379
}
380380

381+
fn concrete_type_name(&self, _: &Self::Context) -> String {
382+
$outname.to_owned()
383+
}
384+
381385
#[allow(unused_variables)]
382386
#[allow(unused_mut)]
383387
fn resolve_field(

src/tests/query_tests.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,3 +362,24 @@ fn test_query_inline_fragments_human() {
362362
].into_iter().collect()),
363363
vec![])));
364364
}
365+
366+
#[test]
367+
fn test_object_typename() {
368+
let doc = r#"
369+
{
370+
human(id: "1000") {
371+
__typename
372+
}
373+
}"#;
374+
let database = Database::new();
375+
let schema = RootNode::new(&database, EmptyMutation::<Database>::new());
376+
377+
assert_eq!(
378+
::execute(doc, None, &schema, &Variables::new(), &database),
379+
Ok((Value::object(vec![
380+
("human", Value::object(vec![
381+
("__typename", Value::string("Human")),
382+
].into_iter().collect())),
383+
].into_iter().collect()),
384+
vec![])));
385+
}

0 commit comments

Comments
 (0)