diff --git a/test/library.cpp b/test/library.cpp
index 1f0079b49..ab6ed2683 100644
--- a/test/library.cpp
+++ b/test/library.cpp
@@ -26,6 +26,8 @@ const char * sampleOpdsStream = R"(
00000000-0000-0000-0000-000000000000
Encyclopédie de la Tunisie
+ wikipedia_fr_tunisie_novid_2018-10
+ unforgettable
urn:uuid:0c45160e-f917-760a-9159-dfe3c53cdcdd
/meta?name=favicon&content=wikipedia_fr_tunisie_novid_2018-10
2018-10-08T00:00::00:Z
@@ -36,8 +38,13 @@ const char * sampleOpdsStream = R"(
Wikipedia
+
+ Wikipedia Publishing House
+
+ 1100
+ 172
Tania Louis
@@ -224,6 +231,64 @@ const char sampleLibraryXML[] = R"(
namespace
{
+TEST(LibraryOpdsImportTest, allInOne)
+{
+ kiwix::Library lib;
+ kiwix::Manager manager(&lib);
+ manager.readOpds(sampleOpdsStream, "library-opds-import.unittests.dev");
+
+ EXPECT_EQ(10U, lib.getBookCount(true, true));
+
+ {
+ const kiwix::Book& book1 = lib.getBookById("0c45160e-f917-760a-9159-dfe3c53cdcdd");
+
+ EXPECT_EQ(book1.getTitle(), "Encyclopédie de la Tunisie");
+ EXPECT_EQ(book1.getName(), "wikipedia_fr_tunisie_novid_2018-10");
+ EXPECT_EQ(book1.getFlavour(), "unforgettable");
+ EXPECT_EQ(book1.getLanguage(), "fra");
+ EXPECT_EQ(book1.getDate(), "2018-10-08");
+ EXPECT_EQ(book1.getDescription(), "Le meilleur de Wikipédia sur la Tunisie");
+ EXPECT_EQ(book1.getCreator(), "Wikipedia");
+ EXPECT_EQ(book1.getPublisher(), "Wikipedia Publishing House");
+ EXPECT_EQ(book1.getTags(), "wikipedia;novid;_ftindex");
+ EXPECT_EQ(book1.getCategory(), "");
+ EXPECT_EQ(book1.getUrl(), "http://download.kiwix.org/zim/wikipedia/wikipedia_fr_tunisie_novid_2018-10.zim.meta4");
+ EXPECT_EQ(book1.getSize(), 90030080UL);
+ EXPECT_EQ(book1.getMediaCount(), 1100U); // Roman MC (MediaCount) is 1100
+ EXPECT_EQ(book1.getArticleCount(), 172U); // Hex AC (ArticleCount) is 172
+
+ const auto illustration = book1.getIllustration(48);
+ EXPECT_EQ(illustration->width, 48U);
+ EXPECT_EQ(illustration->height, 48U);
+ EXPECT_EQ(illustration->mimeType, "image/png");
+ EXPECT_EQ(illustration->url, "library-opds-import.unittests.dev/meta?name=favicon&content=wikipedia_fr_tunisie_novid_2018-10");
+ }
+
+ {
+ const kiwix::Book& book2 = lib.getBookById("0189d9be-2fd0-b4b6-7300-20fab0b5cdc8");
+ EXPECT_EQ(book2.getTitle(), "TED talks - Business");
+ EXPECT_EQ(book2.getName(), "");
+ EXPECT_EQ(book2.getFlavour(), "");
+ EXPECT_EQ(book2.getLanguage(), "eng");
+ EXPECT_EQ(book2.getDate(), "2018-07-23");
+ EXPECT_EQ(book2.getDescription(), "Ideas worth spreading");
+ EXPECT_EQ(book2.getCreator(), "TED");
+ EXPECT_EQ(book2.getPublisher(), "");
+ EXPECT_EQ(book2.getTags(), "");
+ EXPECT_EQ(book2.getCategory(), "");
+ EXPECT_EQ(book2.getUrl(), "http://download.kiwix.org/zim/ted/ted_en_business_2018-07.zim.meta4");
+ EXPECT_EQ(book2.getSize(), 8855827456UL);
+ EXPECT_EQ(book2.getMediaCount(), 0U);
+ EXPECT_EQ(book2.getArticleCount(), 0U);
+
+ const auto illustration = book2.getIllustration(48);
+ EXPECT_EQ(illustration->width, 48U);
+ EXPECT_EQ(illustration->height, 48U);
+ EXPECT_EQ(illustration->mimeType, "image/png");
+ EXPECT_EQ(illustration->url, "library-opds-import.unittests.dev/meta?name=favicon&content=ted_en_business_2018-07");
+ }
+}
+
class LibraryTest : public ::testing::Test {
protected:
typedef kiwix::Library::BookIdCollection BookIdCollection;
@@ -292,7 +357,8 @@ TEST_F(LibraryTest, sanityCheck)
EXPECT_EQ(lib.getBooksPublishers(), std::vector({
"",
"Kiwix",
- "Kiwix & Some Enthusiasts"
+ "Kiwix & Some Enthusiasts",
+ "Wikipedia Publishing House"
}));
}