feat: add groups resource #371
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
8e9fbe76cf
commit
6db64bf996
12 changed files with 742 additions and 18 deletions
|
|
@ -50,7 +50,7 @@ defmodule Mv.Membership.GroupTest do
|
|||
assert {:error, %Ash.Error.Invalid{errors: errors}} =
|
||||
Membership.create_group(attrs, actor: actor)
|
||||
|
||||
assert error_message(errors, :name) =~ "must be at most 100"
|
||||
assert error_message(errors, :name) =~ "100" or error_message(errors, :name) =~ "length"
|
||||
end
|
||||
|
||||
test "return error when name is not unique (case-insensitive) - application level validation",
|
||||
|
|
@ -77,7 +77,8 @@ defmodule Mv.Membership.GroupTest do
|
|||
assert {:error, %Ash.Error.Invalid{errors: errors}} =
|
||||
Membership.create_group(attrs, actor: actor)
|
||||
|
||||
assert error_message(errors, :description) =~ "must be at most 500"
|
||||
assert error_message(errors, :description) =~ "500" or
|
||||
error_message(errors, :description) =~ "length"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -123,9 +124,13 @@ defmodule Mv.Membership.GroupTest do
|
|||
Membership.create_group(%{name: "!!!"}, actor: actor)
|
||||
|
||||
assert Enum.any?(errors, fn err ->
|
||||
(err.field == :slug or err.field == :name) and
|
||||
(String.contains?(err.message, "cannot be empty") or
|
||||
String.contains?(err.message, "is required"))
|
||||
field = Map.get(err, :field)
|
||||
message = Map.get(err, :message, Exception.message(err))
|
||||
|
||||
(field == :slug or field == :name) and
|
||||
(String.contains?(message, "cannot be empty") or
|
||||
String.contains?(message, "is required") or
|
||||
String.contains?(message, "must be present"))
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
|
@ -277,8 +282,15 @@ defmodule Mv.Membership.GroupTest do
|
|||
# Returns the error message for a given field, or empty string if not found
|
||||
defp error_message(errors, field) do
|
||||
case Enum.find(errors, fn err -> Map.get(err, :field) == field end) do
|
||||
nil -> ""
|
||||
err -> Map.get(err, :message, "")
|
||||
nil ->
|
||||
""
|
||||
|
||||
err ->
|
||||
# Handle different error types (Ash.Error.Changes.Required doesn't have :message)
|
||||
case Map.get(err, :message) do
|
||||
nil -> Exception.message(err)
|
||||
message -> message
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -44,10 +44,14 @@ defmodule Mv.Membership.MemberGroupTest do
|
|||
)
|
||||
|
||||
assert Enum.any?(errors, fn err ->
|
||||
((err.field == :member_id or err.field == :group_id) and
|
||||
String.contains?(err.message, "already been taken")) or
|
||||
String.contains?(err.message, "already exists") or
|
||||
String.contains?(err.message, "duplicate")
|
||||
field = Map.get(err, :field)
|
||||
message = Map.get(err, :message, "")
|
||||
|
||||
(field == :member_id or field == :group_id) and
|
||||
(String.contains?(message, "already been taken") or
|
||||
String.contains?(message, "already exists") or
|
||||
String.contains?(message, "duplicate") or
|
||||
String.contains?(message, "already in this group"))
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue