From a53f0abae59ccda8c5b0fe8863d010b512e61bd7 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Wed, 9 Apr 2025 21:55:24 +0300 Subject: [PATCH] Add tests for sync AuthorAliasRegistry. --- .../author_transformer_test.exs | 20 ++++++++-- .../sync/author_alias_registry_sync_test.exs | 37 +++++++++++++++++++ .../sync/sync/author_sync_test.exs | 32 +++++++++++++++- 3 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 test/decentralised_book_index/sync/sync/author_alias_registry_sync_test.exs 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 f101d5b..a4f9f44 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 @@ -7,7 +7,12 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorTransformerTest do test "a json contains correct author information" do json_body = %{ "data" => %{ - "attributes" => %{"description" => "Something", "name" => "Author", "avatar_url" => "/images/avatar.png"}, + "attributes" => %{ + "description" => "Something", + "name" => "Author", + "avatar_url" => "/images/avatar.png", + "author_alias_registry_id" => "1320a6fe-b311-45ac-bbaa-39cf29c44624" + }, "id" => "889a323e-d104-4b5d-b276-dad5a9b1da9d", "links" => %{}, "meta" => %{}, @@ -26,13 +31,19 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorTransformerTest do id: "889a323e-d104-4b5d-b276-dad5a9b1da9d", name: "Author", description: "Something", - avatar_url: "/images/avatar.png" + 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 json_body = %{ - "attributes" => %{"description" => "Something", "name" => "Author", "avatar_url" => "/images/avatar.png"}, + "attributes" => %{ + "description" => "Something", + "name" => "Author", + "avatar_url" => "/images/avatar.png", + "author_alias_registry_id" => "1320a6fe-b311-45ac-bbaa-39cf29c44624" + }, "id" => "889a323e-d104-4b5d-b276-dad5a9b1da9d", "links" => %{}, "meta" => %{}, @@ -45,7 +56,8 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorTransformerTest do id: "889a323e-d104-4b5d-b276-dad5a9b1da9d", name: "Author", description: "Something", - avatar_url: "/images/avatar.png" + avatar_url: "/images/avatar.png", + author_alias_registry_id: "1320a6fe-b311-45ac-bbaa-39cf29c44624" } = author 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 new file mode 100644 index 0000000..3c27322 --- /dev/null +++ b/test/decentralised_book_index/sync/sync/author_alias_registry_sync_test.exs @@ -0,0 +1,37 @@ +defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorAliasRegistrySyncTest do + use DecentralisedBookIndex.DataCase, async: true + + alias DecentralisedBookIndex.Sync.AuthorAliasRegistrySync + alias DecentralisedBookIndex.Metadata + + alias DecentralisedBookIndex.TestEndpoints + @test_server_endpoint TestEndpoints.test_api_endpoint() + + describe "sync author alias registry transformations" do + test "a new registry will be created" do + server = generate(dbi_server(url: @test_server_endpoint)) + + attrs = %{ + id: "889a323e-d104-4b5d-b276-dad5a9b1da9d", + } + + assert :ok = AuthorAliasRegistrySync.create_update(attrs, server.id) + assert {:ok, saved_alias} = Metadata.get_author_by_id(attrs.id) + assert server.id == saved_alias.dbi_server_id + end + + test "the same registry" do + server = generate(dbi_server(url: @test_server_endpoint)) + + {:ok, same_alias} = Metadata.create_author_alias_registry() + + attrs = %{ + id: same_alias.id, + } + + assert :ok = AuthorAliasRegistrySync.create_update(attrs, server.id) + assert {:ok, saved_alias} = Metadata.get_author_by_id(attrs.id) + assert server.id == saved_alias.dbi_server_id + end + end +end diff --git a/test/decentralised_book_index/sync/sync/author_sync_test.exs b/test/decentralised_book_index/sync/sync/author_sync_test.exs index 9277cf2..9cd2984 100644 --- a/test/decentralised_book_index/sync/sync/author_sync_test.exs +++ b/test/decentralised_book_index/sync/sync/author_sync_test.exs @@ -31,8 +31,38 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.AuthorSyncTest do author |> Map.replace(:inserted_at, inserted_at) |> Map.replace(:updated_at, updated_at) + |> Map.delete(:author_alias_registry_id) - assert author = saved_author + assert get_submap(saved_author, author) == author + assert nil != saved_author.author_alias_registry_id + assert server.id == saved_author.dbi_server_id + end + + test "a new author has the same alias registry" do + server = generate(dbi_server(url: @test_server_endpoint)) + + 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", + inserted_at: "2025-03-21T09:20:48.791539Z", + updated_at: "2025-03-21T09:20:48.791539Z" + } + + {:ok, inserted_at, 0} = DateTime.from_iso8601(author[:inserted_at]) + {:ok, updated_at, 0} = DateTime.from_iso8601(author[:updated_at]) + + assert :ok = AuthorSync.create_update(author, server.id) + assert {:ok, saved_author} = Metadata.get_author_by_id(author.id) + + author = + author + |> Map.replace(:inserted_at, inserted_at) + |> Map.replace(:updated_at, updated_at) + + assert get_submap(saved_author, author) == author assert nil != saved_author.author_alias_registry_id assert server.id == saved_author.dbi_server_id end