Update Book to sync only a new non-local data.
This commit is contained in:
@@ -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!())
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user