Add ability to list users

This commit is contained in:
Chocobozzz
2019-03-01 11:41:28 +01:00
committed by Thomas Citharel
parent 6ee3233cc6
commit a0123459b3
7 changed files with 182 additions and 13 deletions

View File

@@ -274,7 +274,7 @@ defmodule Mobilizon.ActorsTest do
test "list_users/0 returns all users" do
user = insert(:user)
users = Actors.list_users()
users = Actors.list_users(nil, nil, :id, :desc)
assert [user.id] == users |> Enum.map(& &1.id)
end

View File

@@ -72,6 +72,114 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
end
end
describe "Resolver: List users" do
test "list_users/3 returns a list of users", context do
insert(:user, email: "riri@example.com")
insert(:user, email: "fifi@example.com")
insert(:user, email: "loulou@example.com")
query = """
{
users {
total,
elements {
email
}
}
}
"""
res =
context.conn
|> get("/api", AbsintheHelpers.query_skeleton(query, "user"))
assert json_response(res, 200)["errors"] == nil
assert json_response(res, 200)["data"]["users"]["total"] == 3
assert json_response(res, 200)["data"]["users"]["elements"] |> length == 3
assert json_response(res, 200)["data"]["users"]["elements"]
|> Enum.map(& &1["email"]) == [
"riri@example.com",
"fifi@example.com",
"loulou@example.com"
]
query = """
{
users(page: 2, limit: 1) {
total,
elements {
email
}
}
}
"""
res =
context.conn
|> get("/api", AbsintheHelpers.query_skeleton(query, "user"))
assert json_response(res, 200)["errors"] == nil
assert json_response(res, 200)["data"]["users"]["total"] == 3
assert json_response(res, 200)["data"]["users"]["elements"] |> length == 1
assert json_response(res, 200)["data"]["users"]["elements"] |> Enum.map(& &1["email"]) == [
"fifi@example.com"
]
query = """
{
users(page: 3, limit: 1, sort: ID, direction: DESC) {
total,
elements {
email
}
}
}
"""
res =
context.conn
|> get("/api", AbsintheHelpers.query_skeleton(query, "user"))
assert json_response(res, 200)["errors"] == nil
assert json_response(res, 200)["data"]["users"]["total"] == 3
assert json_response(res, 200)["data"]["users"]["elements"] |> length == 1
assert json_response(res, 200)["data"]["users"]["elements"] |> Enum.map(& &1["email"]) == [
"riri@example.com"
]
end
test "get_current_user/3 returns the current logged-in user", context do
user = insert(:user)
query = """
{
loggedUser {
id
}
}
"""
res =
context.conn
|> get("/api", AbsintheHelpers.query_skeleton(query, "logged_user"))
assert json_response(res, 200)["data"]["loggedUser"] == nil
assert hd(json_response(res, 200)["errors"])["message"] ==
"You need to be logged-in to view current user"
res =
context.conn
|> auth_conn(user)
|> get("/api", AbsintheHelpers.query_skeleton(query, "logged_user"))
assert json_response(res, 200)["data"]["loggedUser"]["id"] == to_string(user.id)
end
end
describe "Resolver: Create an user & actor" do
@user_creation %{
email: "test@demo.tld",
@@ -490,7 +598,7 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
) {
token,
user {
id
id
}
}
}