async-graphql/tests/generic_types.rs

50 lines
1017 B
Rust
Raw Normal View History

2020-09-23 06:39:18 +00:00
use async_graphql::*;
#[async_std::test]
pub async fn test_generic_object() {
struct MyObj<T> {
value: T,
}
#[Object(name = "MyObjI32")]
impl MyObj<i32> {
async fn value(&self) -> i32 {
self.value
}
}
#[Object(name = "MyObjBool")]
impl MyObj<bool> {
async fn value(&self) -> bool {
self.value
}
}
struct Query;
#[Object]
impl Query {
async fn obj_i32(&self) -> MyObj<i32> {
MyObj { value: 100 }
}
async fn obj_bool(&self) -> MyObj<bool> {
MyObj { value: true }
}
}
let schema = Schema::new(Query, EmptyMutation, EmptySubscription);
let query = r#"{
objI32 { value }
objBool { value }
}"#
.to_owned();
assert_eq!(
schema.execute(&query).await.into_result().unwrap().data,
value!({
2020-09-23 06:39:18 +00:00
"objI32": {"value": 100},
"objBool": {"value": true},
})
);
}