50 lines
1.0 KiB
Rust
50 lines
1.0 KiB
Rust
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,
|
|
serde_json::json!({
|
|
"objI32": {"value": 100},
|
|
"objBool": {"value": true},
|
|
})
|
|
);
|
|
}
|