diff --git a/test/decentralised_book_index/metadata/forms/author_form_test.exs b/test/decentralised_book_index/metadata/forms/author_form_test.exs new file mode 100644 index 0000000..07e0065 --- /dev/null +++ b/test/decentralised_book_index/metadata/forms/author_form_test.exs @@ -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 diff --git a/test/decentralised_book_index/metadata/forms/book_form_test.exs b/test/decentralised_book_index/metadata/forms/book_form_test.exs new file mode 100644 index 0000000..88f7d11 --- /dev/null +++ b/test/decentralised_book_index/metadata/forms/book_form_test.exs @@ -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