async-graphql/tests/scalar.rs

71 lines
1.4 KiB
Rust

use async_graphql::*;
mod test_mod {
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
pub struct MyValue {
a: i32,
}
}
#[tokio::test]
pub async fn test_scalar_macro() {
scalar!(
test_mod::MyValue,
"MV",
"DESC",
"https://tools.ietf.org/html/rfc4122"
);
struct Query;
#[Object]
#[allow(unreachable_code)]
impl Query {
async fn value(&self) -> test_mod::MyValue {
todo!()
}
}
let schema = Schema::new(Query, EmptyMutation, EmptySubscription);
assert_eq!(
schema
.execute(r#"{ __type(name:"MV") { name description specifiedByURL } }"#)
.await
.into_result()
.unwrap()
.data,
value!({
"__type": {
"name": "MV",
"description": "DESC",
"specifiedByURL": "https://tools.ietf.org/html/rfc4122",
}
})
);
}
#[tokio::test]
pub async fn test_float_inf() {
struct Query;
#[Object]
impl Query {
async fn value(&self) -> f32 {
f32::INFINITY
}
}
let schema = Schema::new(Query, EmptyMutation, EmptySubscription);
assert_eq!(
schema
.execute("{ value }")
.await
.into_result()
.unwrap()
.data,
value!({ "value": null })
);
}