69 lines
1.6 KiB
Elixir
69 lines
1.6 KiB
Elixir
|
defmodule WabanexWeb.SchemaTest do
|
||
|
use WabanexWeb.ConnCase, async: true
|
||
|
|
||
|
alias Wabanex.{User, Users}
|
||
|
|
||
|
describe "users queries" do
|
||
|
test "when a valid id is given returns the user", %{conn: conn} do
|
||
|
params = %{name: "Joe Doe", email: "joe.doe@anywhere.com", password: "aLongEnough"}
|
||
|
|
||
|
{:ok, %User{id: user_id}} = Users.Create.call(params)
|
||
|
|
||
|
query = """
|
||
|
query TestGetUser($id: UUID4!) {
|
||
|
getUser(id: $id) {
|
||
|
id
|
||
|
name
|
||
|
email
|
||
|
}
|
||
|
}
|
||
|
"""
|
||
|
|
||
|
response =
|
||
|
conn
|
||
|
|> post("/api/graphql", %{query: query, variables: %{"id" => user_id}})
|
||
|
|> json_response(:ok)
|
||
|
|
||
|
expected_response = %{
|
||
|
"data" => %{
|
||
|
"getUser" => %{"id" => user_id, "name" => "Joe Doe", "email" => "joe.doe@anywhere.com"}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
assert expected_response == response
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "user mutations" do
|
||
|
test "when all params are valid creates an user", %{conn: conn} do
|
||
|
mutation = """
|
||
|
mutation TestCreateUser($input: CreateUserInput!) {
|
||
|
createUser(input: $input) {
|
||
|
name
|
||
|
email
|
||
|
}
|
||
|
}
|
||
|
"""
|
||
|
|
||
|
input = %{
|
||
|
"input" => %{
|
||
|
"name" => "Joe Doe",
|
||
|
"email" => "joe.doe@nowhere.com",
|
||
|
"password" => "aLongEnough"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
response =
|
||
|
conn
|
||
|
|> post("/api/graphql", %{query: mutation, variables: input})
|
||
|
|> json_response(:ok)
|
||
|
|
||
|
expected_response = %{
|
||
|
"data" => %{"createUser" => %{"name" => "Joe Doe", "email" => "joe.doe@nowhere.com"}}
|
||
|
}
|
||
|
|
||
|
assert expected_response == response
|
||
|
end
|
||
|
end
|
||
|
end
|