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