Update Book to sync only a new non-local data.

This commit is contained in:
2025-05-06 21:23:42 +03:00
parent 83a82a2da2
commit 72bc941d18
5 changed files with 98 additions and 15 deletions
@@ -7,6 +7,11 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.BookSyncTest do
alias DecentralisedBookIndex.TestEndpoints
@test_server_endpoint TestEndpoints.test_api_endpoint()
setup do
user = generate(user(role: :moderator))
%{user: user}
end
describe "sync book transformations" do
test "a new book will be created" do
server = generate(dbi_server(url: @test_server_endpoint))
@@ -164,11 +169,62 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.BookSyncTest do
assert {:ok, saved_book} = Metadata.get_book_by_id(book.id)
end
test "update book's relationship for an existing book" do
test "the local existing book wouldn't updated", %{user: user} do
server = generate(dbi_server(url: @test_server_endpoint))
book = generate(book())
book_attrs = %{
id: book.id,
cover_image_url: "/images/book_cover2.png",
description: "A cool book 2.",
format: "Ebook",
inserted_at: "2025-01-20T14:44:36.162986Z",
language: "English",
page_count: 1001,
published: "2025-03-05",
title: "New Book2",
updated_at: "2025-02-01T18:14:25.754055Z"
}
assert :ok = BookSync.create_update(book_attrs, server.id)
assert {:ok, saved_book} = Metadata.get_book_by_id(book.id)
assert get_submap(saved_book, book_attrs) != book_attrs
assert saved_book.title != "New Book2"
assert saved_book.dbi_server_id == nil
end
test "old book wouldn't be sync", %{user: user} do
server = generate(dbi_server(url: @test_server_endpoint))
book = generate(book())
book_attrs = %{
id: book.id,
cover_image_url: "/images/book_cover2.png",
description: "A cool book 2.",
format: "Ebook",
inserted_at: "2025-01-20T14:44:36.162986Z",
language: "English",
page_count: 1001,
published: "2025-03-05",
title: "New Book2",
updated_at: "2025-02-01T18:14:25.754055Z"
}
assert :ok = BookSync.create_update(book_attrs, server.id)
assert {:ok, saved_book} = Metadata.get_book_by_id(book.id)
assert get_submap(saved_book, book_attrs) != book_attrs
assert saved_book.title != "New Book2"
end
test "update book's relationship for an existing book" do
server = generate(dbi_server(url: @test_server_endpoint))
book = generate(book(dbi_server_id: server.id))
author1 = generate(author())
author2 = generate(author())
publisher = generate(publisher())
@@ -212,7 +268,8 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.BookSyncTest do
published: "2025-03-04",
publisher_id: publisher.id,
title: "Book 6",
updated_at: "2025-04-08T07:02:42.778095Z"
updated_at: datetime_add_second_as_string(book.updated_at, 10),
dbi_server_id: server.id
}
assert :ok = BookSync.create_update(book_attrs, server.id)
@@ -228,7 +285,7 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.BookSyncTest do
test "olds bids and roles are destroyed after update" do
server = generate(dbi_server(url: @test_server_endpoint))
book = generate(book())
book = generate(book(dbi_server_id: server.id))
author1 = generate(author())
author2 = generate(author())
@@ -273,7 +330,8 @@ defmodule DecentralisedBookIndex.Sync.DataTransformers.BookSyncTest do
published: "2025-03-04",
publisher_id: publisher.id,
title: "Book 6",
updated_at: "2025-04-08T07:02:42.778095Z"
updated_at: datetime_add_second_as_string(book.updated_at, 10),
dbi_server_id: server.id
}
old_bids = get_ids(Metadata.list_book_ids!())
+4 -1
View File
@@ -179,6 +179,8 @@ defmodule DecentralisedBookIndex.Generators do
related_book = opts[:related_book] || nil
dbi_server_id = opts[:dbi_server_id] || nil
book_editions_registry_id =
if related_book do
related_book.book_editions_registry_id
@@ -199,7 +201,8 @@ defmodule DecentralisedBookIndex.Generators do
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,
dbi_server_id: dbi_server_id
],
overrides: opts,
actor: actor