From e98a98b2c169d24635015a5795a50566f5d94c9b Mon Sep 17 00:00:00 2001 From: KKlochko Date: Tue, 1 Apr 2025 14:39:27 +0300 Subject: [PATCH] Add tests for the Book and Author forms. --- .../metadata/forms/author_form_test.exs | 43 +++++++++++ .../metadata/forms/book_form_test.exs | 72 +++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 test/decentralised_book_index/metadata/forms/author_form_test.exs create mode 100644 test/decentralised_book_index/metadata/forms/book_form_test.exs 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