Add tests for the Book and Author forms.
continuous-integration/drone/push Build is passing Details

dev
KKlochko 3 months ago
parent 5f786cfb4b
commit e98a98b2c1

@ -0,0 +1,43 @@
defmodule DecentralisedBookIndex.Metadata.Forms.AuthorFormTest do
use DecentralisedBookIndex.DataCase, async: true
alias DecentralisedBookIndex.Metadata
describe "create new author via the form" do
test "just name and description" do
user = generate(user())
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)
end
end
describe "update existing author via the form" do
test "update author's name" do
user = generate(user())
author = generate(author())
valid_params = %{
"name" => "Another Oleh",
"description" => "A cool author",
}
form =
AshPhoenix.Form.for_update(author, :update,
as: "author",
actor: user
)
assert {:ok, user} = AshPhoenix.Form.submit(form, params: valid_params)
end
end
end

@ -0,0 +1,72 @@
defmodule DecentralisedBookIndex.Metadata.Forms.BookFormTest do
use DecentralisedBookIndex.DataCase, async: true
alias DecentralisedBookIndex.Metadata
describe "create new book via the form" do
test "just name and description" do
user = generate(user())
bids = bids(actor: user)
author_roles = author_roles(actor: user)
valid_params = %{
"title" => "Book",
"description" => "A cool author",
"format" => "Paper",
"language" => "English",
"page_count" => 600,
"published" => ~D[2025-03-06],
"author_roles" => author_roles,
"bids" => bids
}
form = \
AshPhoenix.Form.for_create(Metadata.Book, :create,
as: "book",
actor: user
)
assert {:ok, user} = AshPhoenix.Form.submit(form, params: valid_params)
end
end
describe "update existing book via the form" do
test "update name" do
user = generate(user())
book = generate(book())
valid_params = %{
"title" => "Another Book",
"description" => "A cool book",
}
form =
AshPhoenix.Form.for_update(book, :update,
as: "book",
actor: user
)
assert {:ok, user} = AshPhoenix.Form.submit(form, params: valid_params)
end
test "update bids and authors" do
user = generate(user())
book = generate(book())
bids = bids(actor: user)
author_roles = author_roles(actor: user)
valid_params = %{
"author_roles" => author_roles,
"bids" => bids
}
form =
AshPhoenix.Form.for_update(book, :update,
as: "book",
actor: user
)
assert {:ok, user} = AshPhoenix.Form.submit(form, params: valid_params)
end
end
end
Loading…
Cancel
Save