Add tests for discussion

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-03-04 11:43:35 +01:00
parent 767a1b26d0
commit bc99e48f06
5 changed files with 582 additions and 9 deletions

View File

@@ -89,6 +89,7 @@ defmodule Mobilizon.GraphQL.Error do
defp metadata(:event_not_found), do: {404, dgettext("errors", "Event not found")}
defp metadata(:group_not_found), do: {404, dgettext("errors", "Group not found")}
defp metadata(:resource_not_found), do: {404, dgettext("errors", "Resource not found")}
defp metadata(:discussion_not_found), do: {404, dgettext("errors", "Discussion not found")}
defp metadata(:unknown), do: {500, dgettext("errors", "Something went wrong")}
defp metadata(code) do

View File

@@ -109,6 +109,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
end
end
def create_discussion(_, _, _), do: {:error, :unauthenticated}
def reply_to_discussion(
_parent,
%{text: text, discussion_id: discussion_id},
@@ -141,9 +143,14 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
origin_comment_id || previous_in_reply_to_comment_id || last_comment_id
}) do
{:ok, discussion}
else
{:no_discussion, _} ->
{:error, :discussion_not_found}
end
end
def reply_to_discussion(_, _, _), do: {:error, :unauthenticated}
@spec update_discussion(map(), map(), map()) :: {:ok, Discussion.t()}
def update_discussion(
_parent,
@@ -166,9 +173,14 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
}
) do
{:ok, discussion}
else
{:member, false} ->
{:error, :unauthorized}
end
end
def update_discussion(_, _, _), do: {:error, :unauthenticated}
def delete_discussion(_parent, %{discussion_id: discussion_id}, %{
context: %{
current_user: %User{} = user
@@ -186,8 +198,9 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do
{:error, dgettext("errors", "No discussion with ID %{id}", id: discussion_id)}
{:member, _} ->
{:error,
dgettext("errors", "You are not a member of the group the discussion belongs to")}
{:error, :unauthorized}
end
end
def delete_discussion(_, _, _), do: {:error, :unauthenticated}
end

View File

@@ -329,7 +329,7 @@ defmodule Mobilizon.Discussions do
@doc """
Get a discussion by it's ID
"""
@spec get_discussion(String.t() | integer()) :: Discussion.t()
@spec get_discussion(String.t() | integer()) :: Discussion.t() | nil
def get_discussion(discussion_id) do
Discussion
|> Repo.get(discussion_id)
@@ -399,7 +399,8 @@ defmodule Mobilizon.Discussions do
} ->
Changeset.change(comment, %{discussion_id: discussion_id, url: discussion_url})
end)
|> Repo.transaction() do
|> Repo.transaction(),
%Discussion{} = discussion <- Repo.preload(discussion, @discussion_preloads) do
{:ok, discussion}
end
end
@@ -427,8 +428,9 @@ defmodule Mobilizon.Discussions do
%{last_comment_id: comment_id}
)
end)
|> Repo.transaction() do
# Discussion is not updated
|> Repo.transaction(),
# Discussion is not updated
%Comment{} = comment <- Repo.preload(comment, @comment_preloads) do
{:ok, Map.put(discussion, :last_comment, comment)}
end
end