Update Author resource and test for the form.

dev
KKlochko 2 months ago
parent d004affd74
commit 8dc4a80e31

@ -31,8 +31,8 @@ defmodule DecentralisedBookIndex.Metadata.Author do
registry_id = Ash.Changeset.get_attribute(changeset, :author_alias_registry_id)
if registry_id == nil do
{:ok, registry} =
DecentralisedBookIndex.Metadata.create_author_alias_registry(actor: actor)
registry =
DecentralisedBookIndex.Metadata.create_author_alias_registry!(actor: actor)
Ash.Changeset.force_change_attribute(changeset, :author_alias_registry_id, registry.id)
else
@ -54,8 +54,8 @@ defmodule DecentralisedBookIndex.Metadata.Author do
if related_author_id == nil do
Ash.Changeset.add_error(changeset, :related_author_id, "Related author is empty")
else
{:ok, related_author} =
DecentralisedBookIndex.Metadata.get_author_by_id(related_author_id)
related_author =
DecentralisedBookIndex.Metadata.get_author_by_id!(related_author_id)
Ash.Changeset.force_change_attribute(
changeset,

@ -3,27 +3,65 @@ defmodule DecentralisedBookIndex.Metadata.Forms.AuthorFormTest do
alias DecentralisedBookIndex.Metadata
describe "create new author via the form" do
test "just name and description" do
setup do
user = generate(user(role: :moderator))
%{user: user}
end
describe "form submiting" do
test "user can't submit" do
user = generate(user())
valid_params = %{
"name" => "Oleh",
"description" => "A cool author",
}
assert_raise Ash.Error.Forbidden, fn ->
form = \
AshPhoenix.Form.for_create(Metadata.Author, :create,
as: "author",
actor: user
)
|> AshPhoenix.Form.ensure_can_submit!()
end
end
test "moderator can submit", %{user: user} do
valid_params = %{
"name" => "Oleh",
"description" => "A cool author",
}
assert form =
AshPhoenix.Form.for_create(Metadata.Author, :create,
as: "author",
actor: user
)
|> AshPhoenix.Form.ensure_can_submit!()
end
end
describe "create new author via the form" do
test "just name and description", %{user: user} do
valid_params = %{
"name" => "Oleh",
"description" => "A cool author",
}
form =
AshPhoenix.Form.for_create(Metadata.Author, :create,
as: "author",
actor: user
)
assert {:ok, user} = AshPhoenix.Form.submit(form, params: valid_params)
assert {:ok, author} = AshPhoenix.Form.submit(form, params: valid_params)
end
end
describe "update existing author via the form" do
test "update author's name" do
user = generate(user())
test "update author's name", %{user: user} do
author = generate(author())
valid_params = %{
@ -37,7 +75,7 @@ defmodule DecentralisedBookIndex.Metadata.Forms.AuthorFormTest do
actor: user
)
assert {:ok, user} = AshPhoenix.Form.submit(form, params: valid_params)
assert {:ok, author} = AshPhoenix.Form.submit(form, params: valid_params)
end
end
end

Loading…
Cancel
Save