240 lines
4.0 KiB
Rust
240 lines
4.0 KiB
Rust
|
use async_graphql::*;
|
||
|
|
||
|
#[test]
|
||
|
#[should_panic]
|
||
|
fn object() {
|
||
|
mod t {
|
||
|
use async_graphql::*;
|
||
|
|
||
|
pub struct MyObj;
|
||
|
|
||
|
#[Object]
|
||
|
impl MyObj {
|
||
|
async fn a(&self) -> i32 {
|
||
|
1
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
struct MyObj;
|
||
|
|
||
|
#[Object]
|
||
|
impl MyObj {
|
||
|
async fn b(&self) -> i32 {
|
||
|
1
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject)]
|
||
|
struct Query {
|
||
|
a: MyObj,
|
||
|
b: t::MyObj,
|
||
|
}
|
||
|
|
||
|
Schema::new(
|
||
|
Query {
|
||
|
a: MyObj,
|
||
|
b: t::MyObj,
|
||
|
},
|
||
|
EmptyMutation,
|
||
|
EmptySubscription,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
#[should_panic]
|
||
|
fn simple_object() {
|
||
|
mod t {
|
||
|
use async_graphql::*;
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
pub struct MyObj {
|
||
|
a: i32,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
struct MyObj {
|
||
|
a: i32,
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject)]
|
||
|
struct Query {
|
||
|
a: MyObj,
|
||
|
b: t::MyObj,
|
||
|
}
|
||
|
|
||
|
Schema::new(
|
||
|
Query {
|
||
|
a: MyObj::default(),
|
||
|
b: t::MyObj::default(),
|
||
|
},
|
||
|
EmptyMutation,
|
||
|
EmptySubscription,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
#[should_panic]
|
||
|
fn merged_object() {
|
||
|
mod t {
|
||
|
use async_graphql::*;
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
pub struct Query {
|
||
|
a: i32,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
struct Query {
|
||
|
a: i32,
|
||
|
}
|
||
|
|
||
|
#[derive(MergedObject)]
|
||
|
struct QueryRoot(Query, t::Query);
|
||
|
|
||
|
Schema::new(
|
||
|
QueryRoot(Query::default(), t::Query::default()),
|
||
|
EmptyMutation,
|
||
|
EmptySubscription,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
#[should_panic]
|
||
|
fn enum_type() {
|
||
|
mod t {
|
||
|
use async_graphql::*;
|
||
|
|
||
|
#[derive(Enum, Eq, PartialEq, Copy, Clone)]
|
||
|
pub enum MyEnum {
|
||
|
A,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[derive(Enum, Eq, PartialEq, Copy, Clone)]
|
||
|
enum MyEnum {
|
||
|
B,
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject)]
|
||
|
struct Query {
|
||
|
a: MyEnum,
|
||
|
b: t::MyEnum,
|
||
|
}
|
||
|
|
||
|
Schema::new(
|
||
|
Query {
|
||
|
a: MyEnum::B,
|
||
|
b: t::MyEnum::A,
|
||
|
},
|
||
|
EmptyMutation,
|
||
|
EmptySubscription,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
#[should_panic]
|
||
|
fn union() {
|
||
|
mod t {
|
||
|
use async_graphql::*;
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
pub struct ObjA {
|
||
|
a: i32,
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
pub struct ObjB {
|
||
|
a: i32,
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
pub struct ObjC {
|
||
|
a: i32,
|
||
|
}
|
||
|
|
||
|
#[derive(Union)]
|
||
|
pub enum MyUnion {
|
||
|
ObjA(ObjA),
|
||
|
ObjB(ObjB),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[derive(Union)]
|
||
|
pub enum MyUnion {
|
||
|
ObjA(t::ObjA),
|
||
|
ObjB(t::ObjB),
|
||
|
ObjC(t::ObjC),
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject)]
|
||
|
struct Query {
|
||
|
a: MyUnion,
|
||
|
b: t::MyUnion,
|
||
|
}
|
||
|
|
||
|
Schema::new(
|
||
|
Query {
|
||
|
a: MyUnion::ObjA(t::ObjA::default()),
|
||
|
b: t::MyUnion::ObjB(t::ObjB::default()),
|
||
|
},
|
||
|
EmptyMutation,
|
||
|
EmptySubscription,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
#[should_panic]
|
||
|
fn interface() {
|
||
|
mod t {
|
||
|
use async_graphql::*;
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
pub struct ObjA {
|
||
|
pub a: i32,
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
pub struct ObjB {
|
||
|
pub a: i32,
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject, Default)]
|
||
|
pub struct ObjC {
|
||
|
pub a: i32,
|
||
|
}
|
||
|
|
||
|
#[derive(Interface)]
|
||
|
#[graphql(field(name = "a", type = "&i32"))]
|
||
|
pub enum MyInterface {
|
||
|
ObjA(ObjA),
|
||
|
ObjB(ObjB),
|
||
|
ObjC(ObjC),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[derive(Interface)]
|
||
|
#[graphql(field(name = "a", type = "&i32"))]
|
||
|
enum MyInterface {
|
||
|
ObjA(t::ObjA),
|
||
|
ObjB(t::ObjB),
|
||
|
}
|
||
|
|
||
|
#[derive(SimpleObject)]
|
||
|
struct Query {
|
||
|
a: MyInterface,
|
||
|
b: t::MyInterface,
|
||
|
}
|
||
|
|
||
|
Schema::new(
|
||
|
Query {
|
||
|
a: MyInterface::ObjA(t::ObjA::default()),
|
||
|
b: t::MyInterface::ObjB(t::ObjB::default()),
|
||
|
},
|
||
|
EmptyMutation,
|
||
|
EmptySubscription,
|
||
|
);
|
||
|
}
|