🔍 Implement basic event visibility
See https://framagit.org/framasoft/mobilizon/wikis/spec/Event#visibility Also brings support for event status (tentative/confirmed/cancelled) Closes #56 Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -241,5 +241,63 @@ defmodule MobilizonWeb.Resolvers.EventResolverTest do
|
||||
|
||||
assert json_response(res, 200)["data"]["events"] |> length == 0
|
||||
end
|
||||
|
||||
test "list_events/3 doesn't list private events", context do
|
||||
insert(:event, visibility: :private)
|
||||
insert(:event, visibility: :unlisted)
|
||||
insert(:event, visibility: :moderated)
|
||||
insert(:event, visibility: :invite)
|
||||
|
||||
query = """
|
||||
{
|
||||
events {
|
||||
uuid,
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
|
||||
assert json_response(res, 200)["data"]["events"] |> Enum.map(& &1["uuid"]) == []
|
||||
end
|
||||
|
||||
test "find_event/3 returns an unlisted event", context do
|
||||
event = insert(:event, visibility: :unlisted)
|
||||
|
||||
query = """
|
||||
{
|
||||
event(uuid: "#{event.uuid}") {
|
||||
uuid,
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
|
||||
assert json_response(res, 200)["data"]["event"]["uuid"] == to_string(event.uuid)
|
||||
end
|
||||
|
||||
test "find_event/3 doesn't return a private event", context do
|
||||
event = insert(:event, visibility: :private)
|
||||
|
||||
query = """
|
||||
{
|
||||
event(uuid: "#{event.uuid}") {
|
||||
uuid,
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
res =
|
||||
context.conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "event"))
|
||||
|
||||
assert json_response(res, 200)["errors"] |> hd |> Map.get("message") ==
|
||||
"Event with UUID #{event.uuid} not found"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -105,7 +105,7 @@ defmodule Mobilizon.Factory do
|
||||
organizer_actor: actor,
|
||||
category: build(:category),
|
||||
physical_address: build(:address),
|
||||
public: true,
|
||||
visibility: :public,
|
||||
url: "@#{actor.url}/#{Ecto.UUID.generate()}"
|
||||
}
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user