mirror of https://github.com/kiwix/libkiwix.git
Only migrate bookmarks to books with the same flavour.
If there is no book with the same flavour, but book with same name and different flavour, we do the migration to the other book.
This commit is contained in:
parent
14c9530afa
commit
167e0dc4b3
|
@ -202,6 +202,11 @@ std::string Library::getBestTargetBookId(const Bookmark& bookmark) const {
|
|||
return "";
|
||||
}
|
||||
if (targetBooks.size() != 1) {
|
||||
// We have several, reduce to same flavour
|
||||
auto flavouredTargetBooks = filter(book_filter.flavour(bookmark.getBookFlavour()));
|
||||
if (!flavouredTargetBooks.empty()) {
|
||||
targetBooks = flavouredTargetBooks;
|
||||
}
|
||||
sort(targetBooks, DATE, false);
|
||||
}
|
||||
return targetBooks[0];
|
||||
|
|
|
@ -504,6 +504,7 @@ TEST_F(LibraryTest, MigrateBookmark)
|
|||
std::string bookId2 = "0189d9be-2fd0-b4b6-7300-20fab0b5cdc8";
|
||||
|
||||
auto book1 = lib->getBookById(bookId1);
|
||||
auto book1Flavour = lib->getBookById(bookId1+"_flavour");
|
||||
auto book2 = lib->getBookById(bookId2);
|
||||
|
||||
lib->addBookmark(createBookmark(book1));
|
||||
|
@ -519,6 +520,10 @@ TEST_F(LibraryTest, MigrateBookmark)
|
|||
wrongIdBookmarkNoName.setBookName("");
|
||||
lib->addBookmark(wrongIdBookmarkNoName);
|
||||
|
||||
auto wrongIdFlavourBookmark = createBookmark(book1Flavour);
|
||||
wrongIdFlavourBookmark.setBookId("wrong-book-flavour-id");
|
||||
lib->addBookmark(wrongIdFlavourBookmark);
|
||||
|
||||
auto onlyValidBookmarks = lib->getBookmarks();
|
||||
auto allBookmarks = lib->getBookmarks(false);
|
||||
|
||||
|
@ -526,43 +531,47 @@ TEST_F(LibraryTest, MigrateBookmark)
|
|||
EXPECT_EQ(onlyValidBookmarks[0].getBookId(), bookId1);
|
||||
EXPECT_EQ(onlyValidBookmarks[1].getBookId(), bookId2);
|
||||
|
||||
ASSERT_EQ(allBookmarks.size(), 5);
|
||||
ASSERT_EQ(allBookmarks.size(), 6);
|
||||
EXPECT_EQ(allBookmarks[0].getBookId(), bookId1);
|
||||
EXPECT_EQ(allBookmarks[1].getBookId(), "invalid-book-id");
|
||||
EXPECT_EQ(allBookmarks[2].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[3].getBookId(), "wrong-book-id");
|
||||
EXPECT_EQ(allBookmarks[4].getBookId(), "wrong-book-id-noname");
|
||||
EXPECT_EQ(allBookmarks[5].getBookId(), "wrong-book-flavour-id");
|
||||
|
||||
ASSERT_EQ(lib->migrateBookmarks("no-existant-book"), 0);
|
||||
|
||||
ASSERT_EQ(lib->migrateBookmarks(), std::make_tuple(2, 3));
|
||||
ASSERT_EQ(lib->migrateBookmarks(), std::make_tuple(3, 4));
|
||||
|
||||
onlyValidBookmarks = lib->getBookmarks();
|
||||
allBookmarks = lib->getBookmarks(false);
|
||||
|
||||
ASSERT_EQ(onlyValidBookmarks.size(), 4);
|
||||
ASSERT_EQ(onlyValidBookmarks.size(), 5);
|
||||
EXPECT_EQ(onlyValidBookmarks[0].getBookId(), bookId1);
|
||||
EXPECT_EQ(onlyValidBookmarks[1].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[2].getBookId(), bookId1+"_updated1yearlater");
|
||||
EXPECT_EQ(onlyValidBookmarks[3].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[4].getBookId(), bookId1+"_updated1yearlater_flavour");
|
||||
|
||||
ASSERT_EQ(allBookmarks.size(), 5);
|
||||
ASSERT_EQ(allBookmarks.size(), 6);
|
||||
EXPECT_EQ(allBookmarks[0].getBookId(), bookId1);
|
||||
EXPECT_EQ(allBookmarks[1].getBookId(), "invalid-book-id");
|
||||
EXPECT_EQ(allBookmarks[2].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[3].getBookId(), bookId1+"_updated1yearlater");
|
||||
EXPECT_EQ(allBookmarks[4].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[5].getBookId(), bookId1+"_updated1yearlater_flavour");
|
||||
|
||||
ASSERT_EQ(lib->migrateBookmarks(), std::make_tuple(0, 1));
|
||||
|
||||
ASSERT_EQ(lib->migrateBookmarks(bookId1), 1);
|
||||
allBookmarks = lib->getBookmarks(false);
|
||||
ASSERT_EQ(allBookmarks.size(), 5);
|
||||
ASSERT_EQ(allBookmarks.size(), 6);
|
||||
EXPECT_EQ(allBookmarks[0].getBookId(), bookId1+"_updated1yearlater");
|
||||
EXPECT_EQ(allBookmarks[1].getBookId(), "invalid-book-id");
|
||||
EXPECT_EQ(allBookmarks[2].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[3].getBookId(), bookId1+"_updated1yearlater");
|
||||
EXPECT_EQ(allBookmarks[4].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[5].getBookId(), bookId1+"_updated1yearlater_flavour");
|
||||
|
||||
ASSERT_EQ(lib->migrateBookmarks(bookId1, bookId2), 0); // No more bookId1 bookmark
|
||||
|
||||
|
@ -570,39 +579,42 @@ TEST_F(LibraryTest, MigrateBookmark)
|
|||
onlyValidBookmarks = lib->getBookmarks();
|
||||
allBookmarks = lib->getBookmarks(false);
|
||||
|
||||
ASSERT_EQ(onlyValidBookmarks.size(), 4);
|
||||
ASSERT_EQ(onlyValidBookmarks.size(), 5);
|
||||
EXPECT_EQ(onlyValidBookmarks[0].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[1].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[2].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[3].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[4].getBookId(), bookId1+"_updated1yearlater_flavour");
|
||||
|
||||
|
||||
ASSERT_EQ(allBookmarks.size(), 5);
|
||||
ASSERT_EQ(allBookmarks.size(), 6);
|
||||
EXPECT_EQ(allBookmarks[0].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[1].getBookId(), "invalid-book-id");
|
||||
EXPECT_EQ(allBookmarks[2].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[3].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[4].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[5].getBookId(), bookId1+"_updated1yearlater_flavour");
|
||||
|
||||
ASSERT_EQ(lib->migrateBookmarks("invalid-book-id", bookId1), 1);
|
||||
|
||||
onlyValidBookmarks = lib->getBookmarks();
|
||||
allBookmarks = lib->getBookmarks(false);
|
||||
|
||||
ASSERT_EQ(onlyValidBookmarks.size(), 5);
|
||||
ASSERT_EQ(onlyValidBookmarks.size(), 6);
|
||||
EXPECT_EQ(onlyValidBookmarks[0].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[1].getBookId(), bookId1);
|
||||
EXPECT_EQ(onlyValidBookmarks[2].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[3].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[4].getBookId(), bookId2);
|
||||
EXPECT_EQ(onlyValidBookmarks[5].getBookId(), bookId1+"_updated1yearlater_flavour");
|
||||
|
||||
|
||||
ASSERT_EQ(allBookmarks.size(), 5);
|
||||
ASSERT_EQ(allBookmarks.size(), 6);
|
||||
EXPECT_EQ(allBookmarks[0].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[1].getBookId(), bookId1);
|
||||
EXPECT_EQ(allBookmarks[2].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[3].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[4].getBookId(), bookId2);
|
||||
EXPECT_EQ(allBookmarks[5].getBookId(), bookId1+"_updated1yearlater_flavour");
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue