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…
Reference in new issue