[GraphQL] Move events endpoint to paginated event list
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -1144,120 +1144,89 @@ defmodule Mobilizon.Web.Resolvers.EventTest do
|
||||
]
|
||||
end
|
||||
|
||||
test "list_events/3 returns events", context do
|
||||
event = insert(:event)
|
||||
|
||||
query = """
|
||||
{
|
||||
events {
|
||||
uuid,
|
||||
@fetch_events_query """
|
||||
query Events($page: Int, $limit: Int) {
|
||||
events(page: $page, limit: $limit) {
|
||||
total
|
||||
elements {
|
||||
uuid
|
||||
}
|
||||
}
|
||||
"""
|
||||
}
|
||||
"""
|
||||
|
||||
test "list_events/3 returns events", %{conn: conn} do
|
||||
event = insert(:event)
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(query: @fetch_events_query)
|
||||
|
||||
assert json_response(res, 200)["data"]["events"] |> Enum.map(& &1["uuid"]) == [event.uuid]
|
||||
assert res["data"]["events"]["elements"] |> Enum.map(& &1["uuid"]) == [
|
||||
event.uuid
|
||||
]
|
||||
|
||||
Enum.each(0..15, fn _ ->
|
||||
insert(:event)
|
||||
end)
|
||||
|
||||
query = """
|
||||
{
|
||||
events {
|
||||
uuid,
|
||||
}
|
||||
}
|
||||
"""
|
||||
res =
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(query: @fetch_events_query)
|
||||
|
||||
assert res["data"]["events"]["total"] == 17
|
||||
assert res["data"]["events"]["elements"] |> length == 10
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(query: @fetch_events_query, variables: %{page: 2})
|
||||
|
||||
assert json_response(res, 200)["data"]["events"] |> length == 10
|
||||
|
||||
query = """
|
||||
{
|
||||
events(page: 2) {
|
||||
uuid,
|
||||
}
|
||||
}
|
||||
"""
|
||||
assert res["data"]["events"]["total"] == 17
|
||||
assert res["data"]["events"]["elements"] |> length == 7
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(
|
||||
query: @fetch_events_query,
|
||||
variables: %{page: 2, limit: 15}
|
||||
)
|
||||
|
||||
assert json_response(res, 200)["data"]["events"] |> length == 7
|
||||
|
||||
query = """
|
||||
{
|
||||
events(page: 2, limit: 15) {
|
||||
uuid,
|
||||
}
|
||||
}
|
||||
"""
|
||||
assert res["data"]["events"]["total"] == 17
|
||||
assert res["data"]["events"]["elements"] |> length == 2
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(
|
||||
query: @fetch_events_query,
|
||||
variables: %{page: 3, limit: 15}
|
||||
)
|
||||
|
||||
assert json_response(res, 200)["data"]["events"] |> length == 2
|
||||
|
||||
query = """
|
||||
{
|
||||
events(page: 3, limit: 15) {
|
||||
uuid,
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
|
||||
assert json_response(res, 200)["data"]["events"] |> length == 0
|
||||
assert res["data"]["events"]["total"] == 17
|
||||
assert res["data"]["events"]["elements"] |> length == 0
|
||||
end
|
||||
|
||||
test "list_events/3 doesn't list private events", context do
|
||||
test "list_events/3 doesn't list private events", %{conn: conn} do
|
||||
insert(:event, visibility: :private)
|
||||
insert(:event, visibility: :unlisted)
|
||||
insert(:event, visibility: :restricted)
|
||||
|
||||
query = """
|
||||
{
|
||||
events {
|
||||
uuid,
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(query: @fetch_events_query)
|
||||
|
||||
assert json_response(res, 200)["data"]["events"] |> Enum.map(& &1["uuid"]) == []
|
||||
assert res["data"]["events"]["total"] == 0
|
||||
assert res["data"]["events"]["elements"] |> Enum.map(& &1["uuid"]) == []
|
||||
end
|
||||
|
||||
test "list_events/3 doesn't list draft events", context do
|
||||
test "list_events/3 doesn't list draft events", %{conn: conn} do
|
||||
insert(:event, visibility: :public, draft: true)
|
||||
|
||||
query = """
|
||||
{
|
||||
events {
|
||||
uuid,
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
conn
|
||||
|> AbsintheHelpers.graphql_query(query: @fetch_events_query)
|
||||
|
||||
assert json_response(res, 200)["data"]["events"] |> Enum.map(& &1["uuid"]) == []
|
||||
assert res["data"]["events"]["total"] == 0
|
||||
assert res["data"]["events"]["elements"] |> Enum.map(& &1["uuid"]) == []
|
||||
end
|
||||
|
||||
test "find_event/3 returns an unlisted event", context do
|
||||
|
||||
@@ -29,12 +29,12 @@ defmodule Mobilizon.EventsTest do
|
||||
end
|
||||
|
||||
test "list_events/0 returns all events", %{event: event} do
|
||||
assert event.title == hd(Events.list_events()).title
|
||||
assert event.title == hd(Events.list_events().elements).title
|
||||
end
|
||||
|
||||
test "list_events/5 returns events from other instances if we follow them",
|
||||
%{event: _event} do
|
||||
events = Events.list_events()
|
||||
events = Events.list_events().elements
|
||||
assert length(events) == 1
|
||||
|
||||
%Actor{id: remote_instance_actor_id} = remote_instance_actor = insert(:instance_actor)
|
||||
@@ -46,7 +46,7 @@ defmodule Mobilizon.EventsTest do
|
||||
|
||||
insert(:follower, target_actor: remote_instance_actor, actor: own_instance_actor)
|
||||
|
||||
events = Events.list_events()
|
||||
events = Events.list_events().elements
|
||||
assert length(events) == 2
|
||||
assert events |> Enum.any?(fn event -> event.title == "My Remote event" end)
|
||||
end
|
||||
@@ -58,7 +58,7 @@ defmodule Mobilizon.EventsTest do
|
||||
%Event{url: remote_event_url} = insert(:event, local: false, title: "My Remote event")
|
||||
Mobilizon.Share.create(remote_event_url, remote_instance_actor_id, remote_actor_id)
|
||||
|
||||
events = Events.list_events()
|
||||
events = Events.list_events().elements
|
||||
assert length(events) == 1
|
||||
assert events |> Enum.all?(fn event -> event.title != "My Remote event" end)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user