use crate::execute;
#[tokio::test]
async fn find_one() {
let request = async_graphql::Request::new(
r#"
query {
get_comment(get_comment_input: { query: { id: 1 } }) {
data {
id
}
}
}
"#,
);
let response = execute(request, None).await;
assert!(response.is_ok());
}
#[tokio::test]
async fn find_one_by_string() {
let request = async_graphql::Request::new(
r#"
mutation {
create_comment(create_comment_input: { values: { content: "findOneByString", status: true } }) {
data {
id
}
}
}
"#,
);
execute(request, None).await;
let request = async_graphql::Request::new(
r#"
query {
get_comment(get_comment_input: { query: { content: "findOneByString" } }) {
data {
id
}
}
}
"#,
);
let response = execute(request, None).await;
assert!(response.is_ok());
}
#[tokio::test]
async fn find_one_by_int() {
let request = async_graphql::Request::new(
r#"
mutation {
create_comment(create_comment_input: { values: { content: "findOneByInt", status: true } }) {
data {
id
}
}
}
"#,
);
execute(request, None).await;
let request = async_graphql::Request::new(
r#"
query {
get_comment(get_comment_input: { query: { id: 2 } }) {
data {
id
}
}
}
"#,
);
let response = execute(request, None).await;
assert!(response.is_ok());
}
#[tokio::test]
async fn find_one_by_bool() {
let request = async_graphql::Request::new(
r#"
mutation {
create_comment(create_comment_input: { values: { content: "findOneByBool", status: true } }) {
data {
id
}
}
}
"#,
);
execute(request, None).await;
let request = async_graphql::Request::new(
r#"
query {
get_comment(get_comment_input: { query: { status: true } }) {
data {
id
}
}
}
"#,
);
let response = execute(request, None).await;
assert!(response.is_ok());
}
#[tokio::test]
async fn returns_correct_scalars() {
let request = async_graphql::Request::new(
r#"
mutation {
create_comment(create_comment_input: { values: { content: "returnsCorrectScalars", status: true } }) {
data {
id
}
}
}
"#,
);
execute(request, None).await;
let request = async_graphql::Request::new(
r#"
query {
get_comment(get_comment_input: { query: { content: "returnsCorrectScalars" } }) {
data {
id
content
status
}
}
}
"#,
);
let response = execute(request, None).await;
let json = response.data.into_json().unwrap();
let comment = json.get("get_comment").unwrap();
assert_eq!(
comment["data"].get("content").unwrap().as_str().unwrap(),
"returnsCorrectScalars"
);
assert_eq!(
comment["data"].get("status").unwrap().as_bool().unwrap(),
true
);
}
#[tokio::test]
async fn returns_correct_scalars_uuid_datetime() {
let uuid = uuid::Uuid::new_v4().to_string();
let datetime = chrono::Utc::now();
let request = async_graphql::Request::new(format!(
r#"
mutation {{
create_reaction(create_reaction_input: {{ values: {{ status: true, uuid: "{}", reaction_date: "{}" }} }}) {{
data {{
id
content
}}
}}
}}
"#,
uuid,
datetime.to_rfc3339_opts(chrono::SecondsFormat::Secs, true)
));
execute(request, None).await;
let request = async_graphql::Request::new(format!(
r#"
query {{
get_reaction(get_reaction_input: {{ query: {{ uuid: "{}" }} }}) {{
data {{
id
content
status
uuid
reaction_date
}}
}}
}}
"#,
uuid
));
let response = execute(request, None).await;
let json = response.data.into_json().unwrap();
let reaction = json.get("get_reaction").unwrap();
let reaction_date_str = reaction["data"]
.get("reaction_date")
.unwrap()
.as_str()
.unwrap();
assert_eq!(
reaction["data"].get("uuid").unwrap().as_str().unwrap(),
uuid
);
assert_eq!(
reaction_date_str,
datetime.to_rfc3339_opts(chrono::SecondsFormat::Secs, false)
);
}
#[tokio::test]
async fn find_one_with_or_filter() {
let request = async_graphql::Request::new(
r#"
query {
get_comment(get_comment_input: { query: { OR: [{ id: 1 }, { id: 2 }] } }) {
data {
id
}
}
}
"#,
);
let response = execute(request, None).await;
assert!(response.is_ok());
}
#[tokio::test]
async fn find_one_with_and_filter() {
let request = async_graphql::Request::new(
r#"
query {
get_comment(get_comment_input: { query: { AND: [{ id: 1 }, { content: "This is content test." }] } }) {
data {
id
}
}
}
"#,
);
let response = execute(request, None).await;
assert!(response.is_ok());
}
#[tokio::test]
async fn find_one_with_virtual_field() {
let request = async_graphql::Request::new(
r#"
query {
get_comment(get_comment_input: { query: { id: 1, virtual_id: "im virtual" } }) {
data {
id
}
}
}
"#,
);
let response = execute(request, None).await;
assert!(response.is_ok());
}