use crate::helper::*;
use wundergraph_example::MyContext;
#[test]
fn query_filter_eq_not_nullable_child() {
let (schema, pool) = get_example_schema();
let ctx = MyContext::new(pool.get().unwrap());
let res = execute_query(
&schema,
&ctx,
r#"
{
Heros(filter: {species: {name: {eq: "Human"}}}, order: [{column: id, direction: ASC}]) {
heroName
}
}
"#,
);
println!("{:?}", res);
assert!(res.is_ok());
assert_json_snapshot!(
res.as_json(), @r###"[
{
"Heros": [
{
"heroName": "Luke Skywalker"
},
{
"heroName": "Darth Vader"
},
{
"heroName": "Han Solo"
},
{
"heroName": "Leia Organa"
},
{
"heroName": "Wilhuff Tarkin"
}
]
},
[]
]"###
);
}
#[test]
fn query_filter_eq_nullable_child() {
let (schema, pool) = get_example_schema();
let ctx = MyContext::new(pool.get().unwrap());
let res = execute_query(
&schema,
&ctx,
r#"
{
Heros(filter: {home_world: {name: {eq: "Alderaan"}}}) {
heroName
}
}
"#,
);
assert!(res.is_ok());
assert_json_snapshot!(
res.as_json(), @r###"[
{
"Heros": [
{
"heroName": "Leia Organa"
}
]
},
[]
]"###
);
}
#[test]
fn query_filter_nullable_child_is_null() {
let (schema, pool) = get_example_schema();
let ctx = MyContext::new(pool.get().unwrap());
let res = execute_query(
&schema,
&ctx,
r#"
{
Heros(filter: {home_world: {is_null: true}}) {
heroName
}
}
"#,
);
assert!(res.is_ok());
assert_json_snapshot!(
res.as_json(), @r###"[
{
"Heros": [
{
"heroName": "Han Solo"
},
{
"heroName": "Wilhuff Tarkin"
}
]
},
[]
]"###
);
}
#[test]
fn query_filter_negative_expression() {
let (schema, pool) = get_example_schema();
let ctx = MyContext::new(pool.get().unwrap());
let res = execute_query(
&schema,
&ctx,
r#"
{
Heros(filter: {home_world: {name: {not_eq: "Tatooine"}}}) {
heroName
}
}
"#,
);
assert!(res.is_ok());
assert_json_snapshot!(
res.as_json(), @r###"[
{
"Heros": [
{
"heroName": "Leia Organa"
}
]
},
[]
]"###
);
}
#[test]
fn query_filter_double_nested() {
let (schema, pool) = get_example_schema();
let ctx = MyContext::new(pool.get().unwrap());
let res = execute_query(
&schema,
&ctx,
r#"
{
Heros(filter: {home_world: {heros: {heroName: {like: "Luke%"}}}}) {
heroName
}
}
"#,
);
assert!(res.is_ok());
assert_json_snapshot!(
res.as_json(), @r###"[
{
"Heros": [
{
"heroName": "Luke Skywalker"
},
{
"heroName": "Darth Vader"
}
]
},
[]
]"###
);
}
#[test]
fn query_filter_double_nested_negative() {
let (schema, pool) = get_example_schema();
let ctx = MyContext::new(pool.get().unwrap());
let res = execute_query(
&schema,
&ctx,
r#"
{
Heros(filter: {home_world: {heros: {heroName: {not_eq: "Leia Organa"}}}}) {
heroName
}
}
"#,
);
assert!(res.is_ok());
assert_json_snapshot!(
res.as_json(), @r###"[
{
"Heros": [
{
"heroName": "Luke Skywalker"
},
{
"heroName": "Darth Vader"
}
]
},
[]
]"###
);
}