From ebbee7f9a5d326e547c574b597f86a9cf501f18c Mon Sep 17 00:00:00 2001 From: KKlochko Date: Sun, 27 Apr 2025 15:21:26 +0300 Subject: [PATCH] Update the code format. --- lib/decentralised_book_index/accounts/user.ex | 24 +-- lib/decentralised_book_index/metadata/book.ex | 3 +- .../sync/api_clients/fetch_json.ex | 4 +- .../sync/api_clients/fetch_jsons.ex | 1 + .../data_transformers/author_transformer.ex | 2 +- .../sync/sync/book_sync.ex | 1 + .../sync/sync/publisher_sync.ex | 1 + .../sync/sync_tasks/sync_server_task.ex | 1 + .../auth_overrides.ex | 4 +- .../components/my_components.ex | 18 +- .../components/my_components/pagination.ex | 6 +- .../components/my_components/select_author.ex | 6 +- .../my_components/select_publisher.ex | 6 +- .../live/author_live/form_component.ex | 13 +- .../live/author_live/index.ex | 15 +- .../live/author_live/show.ex | 7 +- .../live/book_live/form_component.ex | 8 +- .../live/book_live/index.ex | 22 +-- .../live/book_live/show.ex | 11 +- .../live/dbi_server_live/edit.ex | 5 +- .../live/dbi_server_live/form_component.ex | 4 +- .../live/dbi_server_live/index.ex | 15 +- .../live/publisher_live/edit.ex | 5 +- .../live/publisher_live/form_component.ex | 4 +- .../live/publisher_live/index.ex | 15 +- .../live/user_live/index.ex | 16 +- .../metadata/author_test.exs | 61 +++++-- .../metadata/book_test.exs | 163 ++++++++++++++++-- .../metadata/forms/author_form_test.exs | 29 ++-- .../metadata/forms/publisher_form_test.exs | 10 +- .../sync/api_clients/fetch_json_test.exs | 4 +- .../sync/api_clients/fetch_jsons_test.exs | 10 +- .../author_transformer_test.exs | 29 ++-- .../sync/author_alias_registry_sync_test.exs | 4 +- .../sync/book_editions_registry_sync_test.exs | 4 +- test/support/generators.ex | 8 +- 36 files changed, 378 insertions(+), 161 deletions(-) diff --git a/lib/decentralised_book_index/accounts/user.ex b/lib/decentralised_book_index/accounts/user.ex index b2dcb96..f7014eb 100644 --- a/lib/decentralised_book_index/accounts/user.ex +++ b/lib/decentralised_book_index/accounts/user.ex @@ -48,6 +48,18 @@ defmodule DecentralisedBookIndex.Accounts.User do repo DecentralisedBookIndex.Repo end + code_interface do + define :list_moderators + define :search, action: :search, args: [:email] + + define :get_by_id, action: :read, get_by: [:id] + define :get_by_email, args: [:email] + + define :set_role, args: [:role] + define :make_moderator + define :make_user + end + actions do defaults [:read] @@ -289,16 +301,4 @@ defmodule DecentralisedBookIndex.Accounts.User do identities do identity :unique_email, [:email] end - - code_interface do - define :list_moderators - define :search, action: :search, args: [:email] - - define :get_by_id, action: :read, get_by: [:id] - define :get_by_email, args: [:email] - - define :set_role, args: [:role] - define :make_moderator - define :make_user - end end diff --git a/lib/decentralised_book_index/metadata/book.ex b/lib/decentralised_book_index/metadata/book.ex index e6d1da4..48c25ff 100644 --- a/lib/decentralised_book_index/metadata/book.ex +++ b/lib/decentralised_book_index/metadata/book.ex @@ -81,7 +81,8 @@ defmodule DecentralisedBookIndex.Metadata.Book do registry_id = Ash.Changeset.get_attribute(changeset, :book_editions_registry_id) if registry_id == nil do - registry = DecentralisedBookIndex.Metadata.create_book_editions_registry!(authorize?: false) + registry = + DecentralisedBookIndex.Metadata.create_book_editions_registry!(authorize?: false) Ash.Changeset.force_change_attribute(changeset, :book_editions_registry_id, registry.id) else diff --git a/lib/decentralised_book_index/sync/api_clients/fetch_json.ex b/lib/decentralised_book_index/sync/api_clients/fetch_json.ex index 6031c30..c106d6f 100644 --- a/lib/decentralised_book_index/sync/api_clients/fetch_json.ex +++ b/lib/decentralised_book_index/sync/api_clients/fetch_json.ex @@ -7,7 +7,9 @@ defmodule DecentralisedBookIndex.Sync.ApiClients.FetchJson do else {:error, data} end - {:error, message} -> {:error, message} + + {:error, message} -> + {:error, message} end end end diff --git a/lib/decentralised_book_index/sync/api_clients/fetch_jsons.ex b/lib/decentralised_book_index/sync/api_clients/fetch_jsons.ex index 3bdb5d8..7c7381d 100644 --- a/lib/decentralised_book_index/sync/api_clients/fetch_jsons.ex +++ b/lib/decentralised_book_index/sync/api_clients/fetch_jsons.ex @@ -18,6 +18,7 @@ defmodule DecentralisedBookIndex.Sync.ApiClients.FetchJsons do case FetchJson.get(next) do {:ok, page} -> {mapper.(page["data"]), get_in(page, ["links", "next"])} + {:error, message} -> Logger.error("FetchJsons error for #{url}: #{inspect(message)}") {[], nil} diff --git a/lib/decentralised_book_index/sync/data_transformers/author_transformer.ex b/lib/decentralised_book_index/sync/data_transformers/author_transformer.ex index d574adb..1c0c413 100644 --- a/lib/decentralised_book_index/sync/data_transformers/author_transformer.ex +++ b/lib/decentralised_book_index/sync/data_transformers/author_transformer.ex @@ -13,7 +13,7 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorTransformer do name: get_in(json_body, ["attributes", "name"]), description: get_in(json_body, ["attributes", "description"]), avatar_url: get_in(json_body, ["attributes", "avatar_url"]), - author_alias_registry_id: get_in(json_body, ["attributes", "author_alias_registry_id"]), + author_alias_registry_id: get_in(json_body, ["attributes", "author_alias_registry_id"]) } {:ok, attrs} diff --git a/lib/decentralised_book_index/sync/sync/book_sync.ex b/lib/decentralised_book_index/sync/sync/book_sync.ex index d840b3e..93aec08 100644 --- a/lib/decentralised_book_index/sync/sync/book_sync.ex +++ b/lib/decentralised_book_index/sync/sync/book_sync.ex @@ -19,6 +19,7 @@ defmodule DecentralisedBookIndex.Sync.BookSync do |> Ash.update!(authorize?: false) :ok + {:error, %Ash.Error.Query.NotFound{}} -> attrs = attrs diff --git a/lib/decentralised_book_index/sync/sync/publisher_sync.ex b/lib/decentralised_book_index/sync/sync/publisher_sync.ex index f7979f5..bacc9c2 100644 --- a/lib/decentralised_book_index/sync/sync/publisher_sync.ex +++ b/lib/decentralised_book_index/sync/sync/publisher_sync.ex @@ -15,6 +15,7 @@ defmodule DecentralisedBookIndex.Sync.PublisherSync do |> Ash.update!(authorize?: false) :ok + {:error, %Ash.Error.Query.NotFound{}} -> attrs = attrs diff --git a/lib/decentralised_book_index/sync/sync_tasks/sync_server_task.ex b/lib/decentralised_book_index/sync/sync_tasks/sync_server_task.ex index fdf5ea4..66f5ee7 100644 --- a/lib/decentralised_book_index/sync/sync_tasks/sync_server_task.ex +++ b/lib/decentralised_book_index/sync/sync_tasks/sync_server_task.ex @@ -28,6 +28,7 @@ defmodule DecentralisedBookIndex.SyncTasks.SyncServerTask do end defp params(datetime) when is_nil(datetime), do: "" + defp params(datetime) when not is_nil(datetime) do "?filter[updated_at][gte]=#{DateTime.to_iso8601(datetime)}" end diff --git a/lib/decentralised_book_index_web/auth_overrides.ex b/lib/decentralised_book_index_web/auth_overrides.ex index 600f000..2374fcc 100644 --- a/lib/decentralised_book_index_web/auth_overrides.ex +++ b/lib/decentralised_book_index_web/auth_overrides.ex @@ -10,8 +10,8 @@ defmodule DecentralisedBookIndexWeb.AuthOverrides do # For a complete reference, see https://hexdocs.pm/ash_authentication_phoenix/ui-overrides.html override AshAuthentication.Phoenix.Components.Banner do - # set :image_url, "https://media.giphy.com/media/g7GKcSzwQfugw/giphy.gif" - # set :text_class, "bg-red-500" + # set :image_url, "https://media.giphy.com/media/g7GKcSzwQfugw/giphy.gif" + # set :text_class, "bg-red-500" set :image_url, nil set :dark_image_url, nil end diff --git a/lib/decentralised_book_index_web/components/my_components.ex b/lib/decentralised_book_index_web/components/my_components.ex index 6136e97..8c71ffb 100644 --- a/lib/decentralised_book_index_web/components/my_components.ex +++ b/lib/decentralised_book_index_web/components/my_components.ex @@ -12,14 +12,16 @@ defmodule DecentralisedBookIndexWeb.Components.MyComponents do import MyComponents.JustSearchResources, only: [just_search_resources: 1] import MyComponents.Pagination, only: [pagination: 1] - import MyComponents.Buttons, only: [ - success_button: 1, - primary_button: 1, - add_button: 1, - save_button: 1, - edit_button: 1, - cancel_button: 1, - ] + + import MyComponents.Buttons, + only: [ + success_button: 1, + primary_button: 1, + add_button: 1, + save_button: 1, + edit_button: 1, + cancel_button: 1 + ] alias MyComponents.SelectPublisher import MyComponents.SelectedPublisher, only: [selected_publisher: 1] diff --git a/lib/decentralised_book_index_web/components/my_components/pagination.ex b/lib/decentralised_book_index_web/components/my_components/pagination.ex index 45aef8b..270865e 100644 --- a/lib/decentralised_book_index_web/components/my_components/pagination.ex +++ b/lib/decentralised_book_index_web/components/my_components/pagination.ex @@ -84,7 +84,7 @@ defmodule DecentralisedBookIndexWeb.Components.MyComponents.Pagination do %{count: count, limit: limit} = pages max_number = - count/limit + (count / limit) |> :math.ceil() |> Kernel.trunc() @@ -94,7 +94,7 @@ defmodule DecentralisedBookIndexWeb.Components.MyComponents.Pagination do defp get_current_page(pages) do %{offset: offset, limit: limit} = pages - Kernel.trunc(offset/limit) +1 + Kernel.trunc(offset / limit) + 1 end def page_params_which(page, params, which) do @@ -111,7 +111,7 @@ defmodule DecentralisedBookIndexWeb.Components.MyComponents.Pagination do def page_params_number(page_params, params, number) do limit = Keyword.get(page_params, :limit) - offset = limit*(number-1) + offset = limit * (number - 1) params |> Map.put("limit", limit) diff --git a/lib/decentralised_book_index_web/components/my_components/select_author.ex b/lib/decentralised_book_index_web/components/my_components/select_author.ex index c05af77..03e8427 100644 --- a/lib/decentralised_book_index_web/components/my_components/select_author.ex +++ b/lib/decentralised_book_index_web/components/my_components/select_author.ex @@ -42,9 +42,9 @@ defmodule DecentralisedBookIndexWeb.Components.MyComponents.SelectAuthor do def handle_event("search", %{"query" => query}, socket) do {:noreply, - socket - |> assign(:author_query, query) - |> search()} + socket + |> assign(:author_query, query) + |> search()} end defp search(socket) do diff --git a/lib/decentralised_book_index_web/components/my_components/select_publisher.ex b/lib/decentralised_book_index_web/components/my_components/select_publisher.ex index 9d329ca..c15346c 100644 --- a/lib/decentralised_book_index_web/components/my_components/select_publisher.ex +++ b/lib/decentralised_book_index_web/components/my_components/select_publisher.ex @@ -42,9 +42,9 @@ defmodule DecentralisedBookIndexWeb.Components.MyComponents.SelectPublisher do def handle_event("search", %{"query" => query}, socket) do {:noreply, - socket - |> assign(:publisher_query, query) - |> search()} + socket + |> assign(:publisher_query, query) + |> search()} end defp search(socket) do diff --git a/lib/decentralised_book_index_web/live/author_live/form_component.ex b/lib/decentralised_book_index_web/live/author_live/form_component.ex index bf77fa3..085758d 100644 --- a/lib/decentralised_book_index_web/live/author_live/form_component.ex +++ b/lib/decentralised_book_index_web/live/author_live/form_component.ex @@ -74,7 +74,10 @@ defmodule DecentralisedBookIndexWeb.AuthorLive.FormComponent do end def handle_event("save", %{"author" => author_params}, socket) do - case AshPhoenix.Form.submit(socket.assigns.form, params: author_params, actor: socket.assigns.current_user) do + case AshPhoenix.Form.submit(socket.assigns.form, + params: author_params, + actor: socket.assigns.current_user + ) do {:ok, author} -> notify_parent({:saved, author}) @@ -103,7 +106,9 @@ defmodule DecentralisedBookIndexWeb.AuthorLive.FormComponent do defp notify_parent(msg), do: send(self(), {__MODULE__, msg}) - defp assign_form(%{assigns: %{author: author, alternative_author_id: alternative_author_id}} = socket) do + defp assign_form( + %{assigns: %{author: author, alternative_author_id: alternative_author_id}} = socket + ) do alias_id = if alternative_author_id == nil do nil @@ -142,8 +147,8 @@ defmodule DecentralisedBookIndexWeb.AuthorLive.FormComponent do defp patch_url(action, author_id) do case action do :edit -> ~p"/authors/#{author_id}" - :new -> ~p"/authors" - _ -> ~p"/authors" + :new -> ~p"/authors" + _ -> ~p"/authors" end end end diff --git a/lib/decentralised_book_index_web/live/author_live/index.ex b/lib/decentralised_book_index_web/live/author_live/index.ex index 73c4dec..1cdddf2 100644 --- a/lib/decentralised_book_index_web/live/author_live/index.ex +++ b/lib/decentralised_book_index_web/live/author_live/index.ex @@ -60,12 +60,13 @@ defmodule DecentralisedBookIndexWeb.AuthorLive.Index do sort_by = Map.get(params, "sort_by", "name") |> validate_sort_by() page_params = AshPhoenix.LiveView.page_from_params(params, 10) - page = Metadata.search_author!( - search_query, - query: [sort_input: sort_by], - page: page_params ++ [count: true], - actor: socket.assigns.current_user - ) + page = + Metadata.search_author!( + search_query, + query: [sort_input: sort_by], + page: page_params ++ [count: true], + actor: socket.assigns.current_user + ) socket = socket @@ -110,7 +111,7 @@ defmodule DecentralisedBookIndexWeb.AuthorLive.Index do [ {"Sort by name", "name"}, {"Sort by recently updated", "-updated_at"}, - {"Sort by recently added", "-inserted_at"}, + {"Sort by recently added", "-inserted_at"} ] end diff --git a/lib/decentralised_book_index_web/live/author_live/show.ex b/lib/decentralised_book_index_web/live/author_live/show.ex index ea4d5f5..1d5c1b8 100644 --- a/lib/decentralised_book_index_web/live/author_live/show.ex +++ b/lib/decentralised_book_index_web/live/author_live/show.ex @@ -71,15 +71,16 @@ defmodule DecentralisedBookIndexWeb.AuthorLive.Show do @impl true def handle_params(%{"id" => id}, _, socket) do - author = Ash.get!(DecentralisedBookIndex.Metadata.Author, id, actor: socket.assigns.current_user) + author = + Ash.get!(DecentralisedBookIndex.Metadata.Author, id, actor: socket.assigns.current_user) + alternative_names = DecentralisedBookIndex.Metadata.get_author_alternative_names!(author) {:noreply, socket |> assign(:page_title, page_title(socket.assigns.live_action)) |> assign(:author, author) - |> assign(:alternative_names, alternative_names) - } + |> assign(:alternative_names, alternative_names)} end defp page_title(:show), do: "Show Author" diff --git a/lib/decentralised_book_index_web/live/book_live/form_component.ex b/lib/decentralised_book_index_web/live/book_live/form_component.ex index 2288a2a..aa43722 100644 --- a/lib/decentralised_book_index_web/live/book_live/form_component.ex +++ b/lib/decentralised_book_index_web/live/book_live/form_component.ex @@ -373,7 +373,9 @@ defmodule DecentralisedBookIndexWeb.BookLive.FormComponent do defp set_book_edition_registry_id(form, alternative_edition_id) do if alternative_edition_id != nil do form - |> AshPhoenix.Form.update_params(&Map.put(&1, "book_editions_registry_id", alternative_edition_id)) + |> AshPhoenix.Form.update_params( + &Map.put(&1, "book_editions_registry_id", alternative_edition_id) + ) else form end @@ -382,8 +384,8 @@ defmodule DecentralisedBookIndexWeb.BookLive.FormComponent do defp patch_url(action, book_id) do case action do :edit -> ~p"/books/#{book_id}" - :new -> ~p"/books" - _ -> ~p"/books" + :new -> ~p"/books" + _ -> ~p"/books" end end diff --git a/lib/decentralised_book_index_web/live/book_live/index.ex b/lib/decentralised_book_index_web/live/book_live/index.ex index eaac70f..fe8297f 100644 --- a/lib/decentralised_book_index_web/live/book_live/index.ex +++ b/lib/decentralised_book_index_web/live/book_live/index.ex @@ -71,13 +71,14 @@ defmodule DecentralisedBookIndexWeb.BookLive.Index do search_mode = Map.get(params, "search_mode", "title") |> validate_search_mode() page_params = AshPhoenix.LiveView.page_from_params(params, 10) - page = search( - search_mode, - search_query, - page_params, - sort_by: sort_by, - actor: socket.assigns[:current_user] - ) + page = + search( + search_mode, + search_query, + page_params, + sort_by: sort_by, + actor: socket.assigns[:current_user] + ) socket = socket @@ -129,7 +130,7 @@ defmodule DecentralisedBookIndexWeb.BookLive.Index do [ {"Sort by title", "title"}, {"Sort by recently updated", "-updated_at"}, - {"Sort by recently added", "-inserted_at"}, + {"Sort by recently added", "-inserted_at"} ] end @@ -157,7 +158,7 @@ defmodule DecentralisedBookIndexWeb.BookLive.Index do {"Search by title", "title"}, {"Search by isbn13", "isbn13"}, {"Search by isbn", "isbn"}, - {"Search by asin", "asin"}, + {"Search by asin", "asin"} ] end @@ -182,7 +183,7 @@ defmodule DecentralisedBookIndexWeb.BookLive.Index do def search(search_mode, search_query, page_params, opts \\ []) do sort_by = Keyword.get(opts, :sort_by, nil) - actor = Keyword.get(opts, :actor, nil) + actor = Keyword.get(opts, :actor, nil) case search_mode do "title" -> @@ -212,5 +213,4 @@ defmodule DecentralisedBookIndexWeb.BookLive.Index do {:noreply, push_patch(socket, to: ~p"/books?#{params}")} end - end diff --git a/lib/decentralised_book_index_web/live/book_live/show.ex b/lib/decentralised_book_index_web/live/book_live/show.ex index 70e2518..d618722 100644 --- a/lib/decentralised_book_index_web/live/book_live/show.ex +++ b/lib/decentralised_book_index_web/live/book_live/show.ex @@ -99,15 +99,19 @@ defmodule DecentralisedBookIndexWeb.BookLive.Show do @impl true def handle_params(%{"id" => id}, _, socket) do - book = Ash.get!(Metadata.Book, id, actor: socket.assigns.current_user, load: [:bids, :author_roles, :publisher]) + book = + Ash.get!(Metadata.Book, id, + actor: socket.assigns.current_user, + load: [:bids, :author_roles, :publisher] + ) + alternative_editions = Metadata.get_book_alternative_editions!(book) {:noreply, socket |> assign(:page_title, page_title(socket.assigns.live_action)) |> assign(:book, book) - |> assign(:alternative_editions, alternative_editions) - } + |> assign(:alternative_editions, alternative_editions)} end defp page_title(:show), do: "Show Book" @@ -118,6 +122,7 @@ defmodule DecentralisedBookIndexWeb.BookLive.Show do def authors(assigns) do author_roles = Metadata.get_author_roles_by_book_id!(assigns.book.id, load: [:author]) author_count = length(author_roles) + authors_string = author_roles |> Enum.map(fn author_role -> diff --git a/lib/decentralised_book_index_web/live/dbi_server_live/edit.ex b/lib/decentralised_book_index_web/live/dbi_server_live/edit.ex index de2ccd8..2ff0095 100644 --- a/lib/decentralised_book_index_web/live/dbi_server_live/edit.ex +++ b/lib/decentralised_book_index_web/live/dbi_server_live/edit.ex @@ -50,7 +50,10 @@ defmodule DecentralisedBookIndexWeb.DbiServerLive.Edit do end @impl true - def handle_info({DecentralisedBookIndexWeb.DbiServerLive.FormComponent, {:saved, _dbi_server}}, socket) do + def handle_info( + {DecentralisedBookIndexWeb.DbiServerLive.FormComponent, {:saved, _dbi_server}}, + socket + ) do {:noreply, socket} end end diff --git a/lib/decentralised_book_index_web/live/dbi_server_live/form_component.ex b/lib/decentralised_book_index_web/live/dbi_server_live/form_component.ex index 925486b..22d1a27 100644 --- a/lib/decentralised_book_index_web/live/dbi_server_live/form_component.ex +++ b/lib/decentralised_book_index_web/live/dbi_server_live/form_component.ex @@ -99,8 +99,8 @@ defmodule DecentralisedBookIndexWeb.DbiServerLive.FormComponent do defp patch_url(action, server_id) do case action do :edit -> ~p"/servers/#{server_id}" - :new -> ~p"/servers" - _ -> ~p"/servers" + :new -> ~p"/servers" + _ -> ~p"/servers" end end end diff --git a/lib/decentralised_book_index_web/live/dbi_server_live/index.ex b/lib/decentralised_book_index_web/live/dbi_server_live/index.ex index fe0b233..41e5ea9 100644 --- a/lib/decentralised_book_index_web/live/dbi_server_live/index.ex +++ b/lib/decentralised_book_index_web/live/dbi_server_live/index.ex @@ -100,12 +100,13 @@ defmodule DecentralisedBookIndexWeb.DbiServerLive.Index do sort_by = Map.get(params, "sort_by", "name") |> validate_sort_by() page_params = AshPhoenix.LiveView.page_from_params(params, 10) - page = Metadata.search_dbi_server!( - search_query, - query: [sort_input: sort_by], - page: page_params ++ [count: true], - actor: socket.assigns.current_user - ) + page = + Metadata.search_dbi_server!( + search_query, + query: [sort_input: sort_by], + page: page_params ++ [count: true], + actor: socket.assigns.current_user + ) socket = socket @@ -163,7 +164,7 @@ defmodule DecentralisedBookIndexWeb.DbiServerLive.Index do [ {"Sort by name", "name"}, {"Sort by recently updated", "-updated_at"}, - {"Sort by recently added", "-inserted_at"}, + {"Sort by recently added", "-inserted_at"} ] end diff --git a/lib/decentralised_book_index_web/live/publisher_live/edit.ex b/lib/decentralised_book_index_web/live/publisher_live/edit.ex index 72ce49e..df7ac70 100644 --- a/lib/decentralised_book_index_web/live/publisher_live/edit.ex +++ b/lib/decentralised_book_index_web/live/publisher_live/edit.ex @@ -50,7 +50,10 @@ defmodule DecentralisedBookIndexWeb.PublisherLive.Edit do end @impl true - def handle_info({DecentralisedBookIndexWeb.PublisherLive.FormComponent, {:saved, _publisher}}, socket) do + def handle_info( + {DecentralisedBookIndexWeb.PublisherLive.FormComponent, {:saved, _publisher}}, + socket + ) do {:noreply, socket} end end diff --git a/lib/decentralised_book_index_web/live/publisher_live/form_component.ex b/lib/decentralised_book_index_web/live/publisher_live/form_component.ex index 2594bf4..d9ab1a7 100644 --- a/lib/decentralised_book_index_web/live/publisher_live/form_component.ex +++ b/lib/decentralised_book_index_web/live/publisher_live/form_component.ex @@ -100,8 +100,8 @@ defmodule DecentralisedBookIndexWeb.PublisherLive.FormComponent do defp patch_url(action, publisher_id) do case action do :edit -> ~p"/publishers/#{publisher_id}" - :new -> ~p"/publishers" - _ -> ~p"/publishers" + :new -> ~p"/publishers" + _ -> ~p"/publishers" end end end diff --git a/lib/decentralised_book_index_web/live/publisher_live/index.ex b/lib/decentralised_book_index_web/live/publisher_live/index.ex index c18246e..a943bfb 100644 --- a/lib/decentralised_book_index_web/live/publisher_live/index.ex +++ b/lib/decentralised_book_index_web/live/publisher_live/index.ex @@ -71,12 +71,13 @@ defmodule DecentralisedBookIndexWeb.PublisherLive.Index do sort_by = Map.get(params, "sort_by", "name") |> validate_sort_by() page_params = AshPhoenix.LiveView.page_from_params(params, 10) - page = Metadata.search_publisher!( - search_query, - query: [sort_input: sort_by], - page: page_params ++ [count: true], - actor: socket.assigns.current_user - ) + page = + Metadata.search_publisher!( + search_query, + query: [sort_input: sort_by], + page: page_params ++ [count: true], + actor: socket.assigns.current_user + ) socket = socket @@ -124,7 +125,7 @@ defmodule DecentralisedBookIndexWeb.PublisherLive.Index do [ {"Sort by name", "name"}, {"Sort by recently updated", "-updated_at"}, - {"Sort by recently added", "-inserted_at"}, + {"Sort by recently added", "-inserted_at"} ] end diff --git a/lib/decentralised_book_index_web/live/user_live/index.ex b/lib/decentralised_book_index_web/live/user_live/index.ex index 1656093..811818f 100644 --- a/lib/decentralised_book_index_web/live/user_live/index.ex +++ b/lib/decentralised_book_index_web/live/user_live/index.ex @@ -56,7 +56,6 @@ defmodule DecentralisedBookIndexWeb.UserLive.Index do /> <% end %> - """ end @@ -71,12 +70,13 @@ defmodule DecentralisedBookIndexWeb.UserLive.Index do sort_by = Map.get(params, "sort_by", "name") |> validate_sort_by() page_params = AshPhoenix.LiveView.page_from_params(params, 10) - page = User.search!( - search_query, - query: [sort_input: sort_by], - page: page_params ++ [count: true], - actor: socket.assigns.current_user - ) + page = + User.search!( + search_query, + query: [sort_input: sort_by], + page: page_params ++ [count: true], + actor: socket.assigns.current_user + ) socket = socket @@ -101,7 +101,7 @@ defmodule DecentralisedBookIndexWeb.UserLive.Index do [ {"Sort by email", "email"}, {"Sort by role", "role"}, - {"Sort by role desc", "-role"}, + {"Sort by role desc", "-role"} ] end diff --git a/test/decentralised_book_index/metadata/author_test.exs b/test/decentralised_book_index/metadata/author_test.exs index d1a6f26..55d7410 100644 --- a/test/decentralised_book_index/metadata/author_test.exs +++ b/test/decentralised_book_index/metadata/author_test.exs @@ -10,28 +10,42 @@ defmodule DecentralisedBookIndex.Metadata.AuthorTest do describe "authors and registries relationship" do test "a new author get new registry by default", %{user: user} do - assert {:ok, author} = Metadata.create_author("Author", "An description", nil, nil, actor: user) + assert {:ok, author} = + Metadata.create_author("Author", "An description", nil, nil, actor: user) + assert author.author_alias_registry_id != nil end test "a new author belongs to a registry if specified", %{user: user} do assert {:ok, registry} = Metadata.create_author_alias_registry(actor: user) - assert {:ok, author} = Metadata.create_author("Author", "An description", nil, registry.id, actor: user) + + assert {:ok, author} = + Metadata.create_author("Author", "An description", nil, registry.id, actor: user) + assert author.author_alias_registry_id == registry.id end test "a new author to a registry via a related author record", %{user: user} do - {:ok, related_author} = Metadata.create_author("Author", "An description", nil, nil, actor: user) + {:ok, related_author} = + Metadata.create_author("Author", "An description", nil, nil, actor: user) assert {:ok, author} = - Metadata.add_author_to_related_alias_registry("Author2", "An description2", related_author.id, nil, actor: user) + Metadata.add_author_to_related_alias_registry( + "Author2", + "An description2", + related_author.id, + nil, + actor: user + ) assert related_author.author_alias_registry_id == author.author_alias_registry_id end test "a new author to a registry via a empty related author record", %{user: user} do assert {:error, _} = - Metadata.add_author_to_related_alias_registry("Author2", "An description2", nil, actor: user) + Metadata.add_author_to_related_alias_registry("Author2", "An description2", nil, + actor: user + ) end end @@ -43,10 +57,17 @@ defmodule DecentralisedBookIndex.Metadata.AuthorTest do end test "author has related author so they has one alternative name", %{user: user} do - {:ok, related_author} = Metadata.create_author("Author", "An description", nil, nil, actor: user) + {:ok, related_author} = + Metadata.create_author("Author", "An description", nil, nil, actor: user) {:ok, author} = - Metadata.add_author_to_related_alias_registry("Author2", "An description2", related_author.id, nil, actor: user) + Metadata.add_author_to_related_alias_registry( + "Author2", + "An description2", + related_author.id, + nil, + actor: user + ) assert {:ok, alternatives_names} = Metadata.get_author_alternative_names(author) assert alternatives_names = [related_author] @@ -63,10 +84,24 @@ defmodule DecentralisedBookIndex.Metadata.AuthorTest do test "the list has the aliases' ids", %{user: user} do {:ok, author} = Metadata.create_author("Author", "An description", nil, nil, actor: user) + {:ok, alias1} = - Metadata.add_author_to_related_alias_registry("Author2", "An description2", author.id, nil, actor: user) + Metadata.add_author_to_related_alias_registry( + "Author2", + "An description2", + author.id, + nil, + actor: user + ) + {:ok, alias2} = - Metadata.add_author_to_related_alias_registry("Author3", "An description3", author.id, nil, actor: user) + Metadata.add_author_to_related_alias_registry( + "Author3", + "An description3", + author.id, + nil, + actor: user + ) assert {:ok, ids} = Metadata.get_author_ids(author) @@ -78,14 +113,18 @@ defmodule DecentralisedBookIndex.Metadata.AuthorTest do describe "authors and avatar_url" do test "a new author has no avatar by default", %{user: user} do - assert {:ok, author} = Metadata.create_author("Author", "An description", nil, nil, actor: user) + assert {:ok, author} = + Metadata.create_author("Author", "An description", nil, nil, actor: user) + assert author.avatar_url == nil end test "a new author has a avatar", %{user: user} do avatar_url = "/images/avatar.png" - assert {:ok, author} = Metadata.create_author("Author", "An description", avatar_url, nil, actor: user) + assert {:ok, author} = + Metadata.create_author("Author", "An description", avatar_url, nil, actor: user) + assert author.avatar_url == avatar_url end end diff --git a/test/decentralised_book_index/metadata/book_test.exs b/test/decentralised_book_index/metadata/book_test.exs index 7a063ac..6a57c1d 100644 --- a/test/decentralised_book_index/metadata/book_test.exs +++ b/test/decentralised_book_index/metadata/book_test.exs @@ -14,7 +14,22 @@ defmodule DecentralisedBookIndex.Metadata.BookTest do bids = bids() publisher = generate(publisher()) - assert {:ok, book} = Metadata.create_book("Book", "An description", "English", "Paperback", 256, ~D[2025-03-04], bids, author_roles, publisher.id, nil, nil, actor: user) + assert {:ok, book} = + Metadata.create_book( + "Book", + "An description", + "English", + "Paperback", + 256, + ~D[2025-03-04], + bids, + author_roles, + publisher.id, + nil, + nil, + actor: user + ) + assert book.book_editions_registry_id != nil end @@ -24,7 +39,23 @@ defmodule DecentralisedBookIndex.Metadata.BookTest do publisher = generate(publisher()) assert {:ok, registry} = Metadata.create_book_editions_registry(actor: user) - assert {:ok, book} = Metadata.create_book("Book", "An description","English", "Paperback", 256, ~D[2025-03-04], bids, author_roles, publisher.id, nil, registry.id, actor: user) + + assert {:ok, book} = + Metadata.create_book( + "Book", + "An description", + "English", + "Paperback", + 256, + ~D[2025-03-04], + bids, + author_roles, + publisher.id, + nil, + registry.id, + actor: user + ) + assert book.book_editions_registry_id == registry.id end @@ -33,10 +64,37 @@ defmodule DecentralisedBookIndex.Metadata.BookTest do bids = bids() publisher = generate(publisher()) - {:ok, related_book} = Metadata.create_book("Book", "An description", "English", "Paperback", 256, ~D[2025-03-04], bids, author_roles, publisher.id, nil, nil, actor: user) + {:ok, related_book} = + Metadata.create_book( + "Book", + "An description", + "English", + "Paperback", + 256, + ~D[2025-03-04], + bids, + author_roles, + publisher.id, + nil, + nil, + actor: user + ) assert {:ok, book} = - Metadata.add_book_to_related_editions_registry("Book2", "An description2", "English", "Paperback", 256, ~D[2025-03-04], bids, author_roles, publisher.id, related_book.id, nil, actor: user) + Metadata.add_book_to_related_editions_registry( + "Book2", + "An description2", + "English", + "Paperback", + 256, + ~D[2025-03-04], + bids, + author_roles, + publisher.id, + related_book.id, + nil, + actor: user + ) assert related_book.book_editions_registry_id == book.book_editions_registry_id end @@ -47,7 +105,18 @@ defmodule DecentralisedBookIndex.Metadata.BookTest do publisher = generate(publisher()) assert {:error, _} = - Metadata.add_book_to_related_editions_registry("Book2", "An description2", "English", "Paperback", 256, ~D[2025-03-04], bids, author_roles, publisher.id, nil) + Metadata.add_book_to_related_editions_registry( + "Book2", + "An description2", + "English", + "Paperback", + 256, + ~D[2025-03-04], + bids, + author_roles, + publisher.id, + nil + ) end end @@ -57,7 +126,22 @@ defmodule DecentralisedBookIndex.Metadata.BookTest do bids = bids() publisher = generate(publisher()) - {:ok, book} = Metadata.create_book("Book", "An description", "English", "Paperback", 256, ~D[2025-03-04], bids, author_roles, publisher.id, nil, nil, actor: user) + {:ok, book} = + Metadata.create_book( + "Book", + "An description", + "English", + "Paperback", + 256, + ~D[2025-03-04], + bids, + author_roles, + publisher.id, + nil, + nil, + actor: user + ) + assert {:ok, alternatives_names} = Metadata.get_book_alternative_editions(book) assert alternatives_names = [] end @@ -67,10 +151,37 @@ defmodule DecentralisedBookIndex.Metadata.BookTest do bids = bids() publisher = generate(publisher()) - {:ok, related_book} = Metadata.create_book("Book", "An description", "English", "Paperback", 256, ~D[2025-03-04], bids, author_roles, publisher.id, nil, nil, actor: user) + {:ok, related_book} = + Metadata.create_book( + "Book", + "An description", + "English", + "Paperback", + 256, + ~D[2025-03-04], + bids, + author_roles, + publisher.id, + nil, + nil, + actor: user + ) {:ok, book} = - Metadata.add_book_to_related_editions_registry("Book2", "An description2", "English", "Paperback", 256, ~D[2025-03-04], bids, author_roles, publisher.id, related_book.id, nil, actor: user) + Metadata.add_book_to_related_editions_registry( + "Book2", + "An description2", + "English", + "Paperback", + 256, + ~D[2025-03-04], + bids, + author_roles, + publisher.id, + related_book.id, + nil, + actor: user + ) assert {:ok, alternatives_names} = Metadata.get_book_alternative_editions(book) assert alternatives_names = [related_book] @@ -87,17 +198,45 @@ defmodule DecentralisedBookIndex.Metadata.BookTest do %{order: 1, author_id: author.id, role: ""} ] - {:ok, book} = Metadata.create_book("Book", "An description", "English", "Paperback", 256, ~D[2025-03-04], bids, author_roles, publisher.id, nil, nil, actor: user) + {:ok, book} = + Metadata.create_book( + "Book", + "An description", + "English", + "Paperback", + 256, + ~D[2025-03-04], + bids, + author_roles, + publisher.id, + nil, + nil, + actor: user + ) assert {:ok, books} = Metadata.get_author_books(author) end test "get the list contains aliases' books", %{user: user} do {:ok, author} = Metadata.create_author("Author", "An description", nil, nil, actor: user) + {:ok, alias1} = - Metadata.add_author_to_related_alias_registry("Author2", "An description2", author.id, nil, actor: user) + Metadata.add_author_to_related_alias_registry( + "Author2", + "An description2", + author.id, + nil, + actor: user + ) + {:ok, alias2} = - Metadata.add_author_to_related_alias_registry("Author3", "An description3", author.id, nil, actor: user) + Metadata.add_author_to_related_alias_registry( + "Author3", + "An description3", + author.id, + nil, + actor: user + ) book = generate(book(authors: [author])) book2 = generate(book(authors: [alias1])) @@ -107,7 +246,7 @@ defmodule DecentralisedBookIndex.Metadata.BookTest do book_ids = Enum.map(books, & &1.id) - assert book.id in book_ids + assert book.id in book_ids assert book2.id in book_ids assert book3.id in book_ids end diff --git a/test/decentralised_book_index/metadata/forms/author_form_test.exs b/test/decentralised_book_index/metadata/forms/author_form_test.exs index 8e7ca47..5eed14f 100644 --- a/test/decentralised_book_index/metadata/forms/author_form_test.exs +++ b/test/decentralised_book_index/metadata/forms/author_form_test.exs @@ -14,16 +14,15 @@ defmodule DecentralisedBookIndex.Metadata.Forms.AuthorFormTest do valid_params = %{ "name" => "Oleh", - "description" => "A cool author", + "description" => "A cool author" } - assert_raise Ash.Error.Forbidden, fn -> - form = \ - AshPhoenix.Form.for_create(Metadata.Author, :create, - as: "author", - actor: user - ) + form = + AshPhoenix.Form.for_create(Metadata.Author, :create, + as: "author", + actor: user + ) |> AshPhoenix.Form.ensure_can_submit!() end end @@ -31,15 +30,15 @@ defmodule DecentralisedBookIndex.Metadata.Forms.AuthorFormTest do test "moderator can submit", %{user: user} do valid_params = %{ "name" => "Oleh", - "description" => "A cool author", + "description" => "A cool author" } assert form = - AshPhoenix.Form.for_create(Metadata.Author, :create, - as: "author", - actor: user - ) - |> AshPhoenix.Form.ensure_can_submit!() + AshPhoenix.Form.for_create(Metadata.Author, :create, + as: "author", + actor: user + ) + |> AshPhoenix.Form.ensure_can_submit!() end end @@ -47,7 +46,7 @@ defmodule DecentralisedBookIndex.Metadata.Forms.AuthorFormTest do test "just name and description", %{user: user} do valid_params = %{ "name" => "Oleh", - "description" => "A cool author", + "description" => "A cool author" } form = @@ -66,7 +65,7 @@ defmodule DecentralisedBookIndex.Metadata.Forms.AuthorFormTest do valid_params = %{ "name" => "Another Oleh", - "description" => "A cool author", + "description" => "A cool author" } form = diff --git a/test/decentralised_book_index/metadata/forms/publisher_form_test.exs b/test/decentralised_book_index/metadata/forms/publisher_form_test.exs index 9d41903..d7499b6 100644 --- a/test/decentralised_book_index/metadata/forms/publisher_form_test.exs +++ b/test/decentralised_book_index/metadata/forms/publisher_form_test.exs @@ -32,11 +32,11 @@ defmodule DecentralisedBookIndex.Metadata.Forms.PublisherFormTest do } assert form = - AshPhoenix.Form.for_create(Metadata.Publisher, :create, - as: "publisher", - actor: user - ) - |> AshPhoenix.Form.ensure_can_submit!() + AshPhoenix.Form.for_create(Metadata.Publisher, :create, + as: "publisher", + actor: user + ) + |> AshPhoenix.Form.ensure_can_submit!() end end diff --git a/test/decentralised_book_index/sync/api_clients/fetch_json_test.exs b/test/decentralised_book_index/sync/api_clients/fetch_json_test.exs index 7d9174c..6b8694a 100644 --- a/test/decentralised_book_index/sync/api_clients/fetch_json_test.exs +++ b/test/decentralised_book_index/sync/api_clients/fetch_json_test.exs @@ -16,7 +16,9 @@ defmodule DecentralisedBookIndex.Sync.ApiClients.FetchJsonTest do test "get an author", %{user: user} do {:ok, author} = Metadata.create_author("Author", "An description", nil, nil, actor: user) - assert {:ok, data} = FetchJson.get("#{@test_server_endpoint}/api/v1/json/authors/#{author.id}") + assert {:ok, data} = + FetchJson.get("#{@test_server_endpoint}/api/v1/json/authors/#{author.id}") + assert data["data"]["id"] == author.id end end diff --git a/test/decentralised_book_index/sync/api_clients/fetch_jsons_test.exs b/test/decentralised_book_index/sync/api_clients/fetch_jsons_test.exs index e3601c3..13fa94b 100644 --- a/test/decentralised_book_index/sync/api_clients/fetch_jsons_test.exs +++ b/test/decentralised_book_index/sync/api_clients/fetch_jsons_test.exs @@ -16,7 +16,9 @@ defmodule DecentralisedBookIndex.Sync.ApiClients.FetchJsonsTest do describe "authors api" do test "get authors", %{user: user} do for number <- 1..11 do - Metadata.create_author!("Author#{number}", "An description#{number}", nil, nil, actor: user) + Metadata.create_author!("Author#{number}", "An description#{number}", nil, nil, + actor: user + ) end assert {:ok, records} = FetchJsons.get("#{@test_server_endpoint}/api/v1/json/authors") @@ -25,7 +27,9 @@ defmodule DecentralisedBookIndex.Sync.ApiClients.FetchJsonsTest do test "get authors names from API", %{user: user} do for number <- 1..11 do - Metadata.create_author!("Author#{number}", "An description#{number}", nil, nil, actor: user) + Metadata.create_author!("Author#{number}", "An description#{number}", nil, nil, + actor: user + ) end get_author_names = fn data -> @@ -33,7 +37,7 @@ defmodule DecentralisedBookIndex.Sync.ApiClients.FetchJsonsTest do end assert {:ok, records} = - FetchJsons.get("#{@test_server_endpoint}/api/v1/json/authors", get_author_names) + FetchJsons.get("#{@test_server_endpoint}/api/v1/json/authors", get_author_names) assert length(records) == 11 assert Enum.all?(records, fn author -> String.contains?(author, "Author") end) diff --git a/test/decentralised_book_index/sync/data_transformers/author_transformer_test.exs b/test/decentralised_book_index/sync/data_transformers/author_transformer_test.exs index a4f9f44..3c0c90c 100644 --- a/test/decentralised_book_index/sync/data_transformers/author_transformer_test.exs +++ b/test/decentralised_book_index/sync/data_transformers/author_transformer_test.exs @@ -21,19 +21,21 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorTransformerTest do }, "jsonapi" => %{"version" => "1.0"}, "links" => %{ - "self" => "http://localhost:4000/api/v1/json/author/889a323e-d104-4b5d-b276-dad5a9b1da9d" + "self" => + "http://localhost:4000/api/v1/json/author/889a323e-d104-4b5d-b276-dad5a9b1da9d" }, "meta" => %{} } assert {:ok, author} = AuthorTransformer.from_json(json_body) + assert %{ - id: "889a323e-d104-4b5d-b276-dad5a9b1da9d", - name: "Author", - description: "Something", - avatar_url: "/images/avatar.png", - author_alias_registry_id: "1320a6fe-b311-45ac-bbaa-39cf29c44624" - } = author + id: "889a323e-d104-4b5d-b276-dad5a9b1da9d", + name: "Author", + description: "Something", + avatar_url: "/images/avatar.png", + author_alias_registry_id: "1320a6fe-b311-45ac-bbaa-39cf29c44624" + } = author end test "a json doesn't contains author information \"data\" attribute" do @@ -52,13 +54,14 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorTransformerTest do } assert {:ok, author} = AuthorTransformer.from_json(json_body) + assert %{ - id: "889a323e-d104-4b5d-b276-dad5a9b1da9d", - name: "Author", - description: "Something", - avatar_url: "/images/avatar.png", - author_alias_registry_id: "1320a6fe-b311-45ac-bbaa-39cf29c44624" - } = author + id: "889a323e-d104-4b5d-b276-dad5a9b1da9d", + name: "Author", + description: "Something", + avatar_url: "/images/avatar.png", + author_alias_registry_id: "1320a6fe-b311-45ac-bbaa-39cf29c44624" + } = author end end end diff --git a/test/decentralised_book_index/sync/sync/author_alias_registry_sync_test.exs b/test/decentralised_book_index/sync/sync/author_alias_registry_sync_test.exs index 6c9dec0..b97fbe1 100644 --- a/test/decentralised_book_index/sync/sync/author_alias_registry_sync_test.exs +++ b/test/decentralised_book_index/sync/sync/author_alias_registry_sync_test.exs @@ -17,7 +17,7 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorAliasRegistrySyncTe server = generate(dbi_server(url: @test_server_endpoint)) attrs = %{ - id: "889a323e-d104-4b5d-b276-dad5a9b1da9d", + id: "889a323e-d104-4b5d-b276-dad5a9b1da9d" } assert :ok = AuthorAliasRegistrySync.create_update(attrs, server.id) @@ -31,7 +31,7 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorAliasRegistrySyncTe {:ok, same_alias} = Metadata.create_author_alias_registry(actor: user) attrs = %{ - id: same_alias.id, + id: same_alias.id } assert :ok = AuthorAliasRegistrySync.create_update(attrs, server.id) diff --git a/test/decentralised_book_index/sync/sync/book_editions_registry_sync_test.exs b/test/decentralised_book_index/sync/sync/book_editions_registry_sync_test.exs index 545c652..9eef5bc 100644 --- a/test/decentralised_book_index/sync/sync/book_editions_registry_sync_test.exs +++ b/test/decentralised_book_index/sync/sync/book_editions_registry_sync_test.exs @@ -17,7 +17,7 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.BookEditionsRegistrySyncT server = generate(dbi_server(url: @test_server_endpoint)) attrs = %{ - id: "889a323e-d104-4b5d-b276-dad5a9b1da9d", + id: "889a323e-d104-4b5d-b276-dad5a9b1da9d" } assert :ok = BookEditionsRegistrySync.create_update(attrs, server.id) @@ -31,7 +31,7 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.BookEditionsRegistrySyncT {:ok, same_alias} = Metadata.create_book_editions_registry(actor: user) attrs = %{ - id: same_alias.id, + id: same_alias.id } assert :ok = BookEditionsRegistrySync.create_update(attrs, server.id) diff --git a/test/support/generators.ex b/test/support/generators.ex index fe2bc9a..020b5d9 100644 --- a/test/support/generators.ex +++ b/test/support/generators.ex @@ -64,7 +64,7 @@ defmodule DecentralisedBookIndex.Generators do authors = opts[:authors] || for id <- 1..2 do - generate(author(actor: actor)) #.id + generate(author(actor: actor)) end count = min(opts[:count], length(authors)) @@ -140,7 +140,7 @@ defmodule DecentralisedBookIndex.Generators do Metadata.Publisher, :create, defaults: [ - name: sequence(:name, &"Publisher #{&1}"), + name: sequence(:name, &"Publisher #{&1}") ], overrides: opts, actor: actor @@ -194,12 +194,12 @@ defmodule DecentralisedBookIndex.Generators do description: sequence(:description, &"Description #{&1}"), language: sequence(:language, &"Language #{&1}"), format: sequence(:format, &"Format #{&1}"), - page_count: sequence(:page_count, &(abs(&1)+1)), + page_count: sequence(:page_count, &(abs(&1) + 1)), published: sequence(:published, &Date.add(~D[2025-03-04], &1)), bids: bids, author_roles: author_roles, publisher_id: publisher_id, - book_editions_registry_id: book_editions_registry_id, + book_editions_registry_id: book_editions_registry_id ], overrides: opts, actor: actor