This commit is contained in:
parent
70b3875154
commit
8503c085cb
4 changed files with 199 additions and 0 deletions
53
test/membership/setting_test.exs
Normal file
53
test/membership/setting_test.exs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
defmodule Mv.Membership.SettingTest do
|
||||
use Mv.DataCase, async: false
|
||||
alias Mv.Membership
|
||||
|
||||
describe "Settings Resource" do
|
||||
test "can read settings" do
|
||||
# Settings should be a singleton resource
|
||||
assert {:ok, _settings} = Membership.get_settings()
|
||||
end
|
||||
|
||||
test "settings have club_name attribute" do
|
||||
{:ok, settings} = Membership.get_settings()
|
||||
assert Map.has_key?(settings, :club_name)
|
||||
end
|
||||
|
||||
test "can update club_name" do
|
||||
{:ok, settings} = Membership.get_settings()
|
||||
|
||||
assert {:ok, updated_settings} =
|
||||
Membership.update_settings(settings, %{club_name: "New Club Name"})
|
||||
|
||||
assert updated_settings.club_name == "New Club Name"
|
||||
end
|
||||
|
||||
test "club_name is required" do
|
||||
{:ok, settings} = Membership.get_settings()
|
||||
|
||||
assert {:error, %Ash.Error.Invalid{errors: errors}} =
|
||||
Membership.update_settings(settings, %{club_name: nil})
|
||||
|
||||
assert error_message(errors, :club_name) =~ "must be present"
|
||||
end
|
||||
|
||||
test "club_name cannot be empty" do
|
||||
{:ok, settings} = Membership.get_settings()
|
||||
|
||||
assert {:error, %Ash.Error.Invalid{errors: errors}} =
|
||||
Membership.update_settings(settings, %{club_name: ""})
|
||||
|
||||
assert error_message(errors, :club_name) =~ "must be present"
|
||||
end
|
||||
end
|
||||
|
||||
# Helper function to extract error messages
|
||||
defp error_message(errors, field) do
|
||||
errors
|
||||
|> Enum.find(fn error -> error.field == field end)
|
||||
|> case do
|
||||
nil -> ""
|
||||
error -> List.first(error.message) || ""
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue