From c6ce8173b6174010d52d366f8047dbb3b4809e96 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Sat, 15 Mar 2025 21:22:08 +0200 Subject: [PATCH] Add generators for Publisher and Book for testing. --- test/support/generators.ex | 65 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/test/support/generators.ex b/test/support/generators.ex index aa06ef4..e61d934 100644 --- a/test/support/generators.ex +++ b/test/support/generators.ex @@ -90,4 +90,69 @@ defmodule DecentralisedBookIndex.Generators do %{order: order, type: type, bid: "1234567890"} end end + + @doc """ + Generates a publisher. + """ + def publisher(opts \\ []) do + actor = + opts[:actor] || + once(:default_actor, fn -> + generate(user()) + end) + + changeset_generator( + Metadata.Publisher, + :create, + defaults: [ + name: sequence(:name, &"Publisher #{&1}"), + ], + overrides: opts, + actor: actor + ) + end + + @doc """ + Generates a book. + """ + def book(opts \\ []) do + actor = + opts[:actor] || + once(:default_actor, fn -> + generate(user()) + end) + + bids = + opts[:bids] || + once(:default_bids, fn -> + bids() + end) + + author_roles = + opts[:author_roles] || + once(:default_author_roles, fn -> + author_roles() + end) + + publisher = + opts[:publisher] || + once(:default_publisher, fn -> + generate(publisher()) + end) + + changeset_generator( + Metadata.Book, + :create, + defaults: [ + title: sequence(:name, &"Book #{&1}"), + description: sequence(:name, &"Description #{&1}"), + bids: bids, + author_roles: author_roles, + publisher: publisher, + book_editions_registry_id: nil, + ], + overrides: opts, + actor: actor + ) + end end