Add tests for the Publisher form.

dev
KKlochko 2 months ago
parent 6886a1b5d2
commit 1d0abee1de

@ -0,0 +1,78 @@
defmodule DecentralisedBookIndex.Metadata.Forms.PublisherFormTest do
use DecentralisedBookIndex.DataCase, async: true
alias DecentralisedBookIndex.Metadata
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" => "Publisher"
}
assert_raise Ash.Error.Forbidden, fn ->
form =
AshPhoenix.Form.for_create(Metadata.Publisher, :create,
as: "publisher",
actor: user
)
|> AshPhoenix.Form.ensure_can_submit!()
end
end
test "moderator can submit", %{user: user} do
valid_params = %{
"name" => "Publisher"
}
assert form =
AshPhoenix.Form.for_create(Metadata.Publisher, :create,
as: "publisher",
actor: user
)
|> AshPhoenix.Form.ensure_can_submit!()
end
end
describe "create new publisher via the form" do
test "just name and description", %{user: user} do
valid_params = %{
"name" => "Publisher"
}
form =
AshPhoenix.Form.for_create(Metadata.Publisher, :create,
as: "publisher",
actor: user
)
assert {:ok, publisher} = AshPhoenix.Form.submit(form, params: valid_params)
assert publisher.name == valid_params["name"]
end
end
describe "update existing publisher via the form" do
test "update publisher's name", %{user: user} do
publisher = generate(publisher())
valid_params = %{
"name" => "Another Publisher"
}
form =
AshPhoenix.Form.for_update(publisher, :update,
as: "publisher",
actor: user
)
assert {:ok, publisher} = AshPhoenix.Form.submit(form, params: valid_params)
assert publisher.name == valid_params["name"]
end
end
end
Loading…
Cancel
Save