@@ -283,4 +283,49 @@ TEST_F(LibraryTest, getBookByPath)
283
283
EXPECT_EQ (lib.getBookByPath (path).getId (), book.getId ());
284
284
EXPECT_THROW (lib.getBookByPath (" non/existant/path.zim" ), std::out_of_range);
285
285
}
286
+
287
+ class XmlLibraryTest : public ::testing::Test {
288
+ protected:
289
+ void SetUp () override {
290
+ kiwix::Manager manager (&lib);
291
+ manager.readFile ( " ./test/library.xml" , true , true );
292
+ }
293
+
294
+ kiwix::Library lib;
295
+ };
296
+
297
+ TEST_F (XmlLibraryTest, removeBookByIdRemovesTheBook)
298
+ {
299
+ EXPECT_EQ (3U , lib.getBookCount (true , true ));
300
+ EXPECT_NO_THROW (lib.getBookById (" raycharles" ));
301
+ lib.removeBookById (" raycharles" );
302
+ EXPECT_EQ (2U , lib.getBookCount (true , true ));
303
+ EXPECT_THROW (lib.getBookById (" raycharles" ), std::out_of_range);
304
+ };
305
+
306
+ TEST_F (XmlLibraryTest, removeBookByIdDropsTheReader)
307
+ {
308
+ EXPECT_NE (nullptr , lib.getReaderById (" raycharles" ));
309
+ lib.removeBookById (" raycharles" );
310
+ EXPECT_THROW (lib.getReaderById (" raycharles" ), std::out_of_range);
311
+ };
312
+
313
+ TEST_F (XmlLibraryTest, removeBookByIdUpdatesTheSearchDB)
314
+ {
315
+ kiwix::Filter f;
316
+ f.local (true ).valid (true ).query (R"( title:"ray charles")" , false );
317
+
318
+ EXPECT_NO_THROW (lib.getBookById (" raycharles" ));
319
+ EXPECT_EQ (1U , lib.filter (f).size ());
320
+
321
+ lib.removeBookById (" raycharles" );
322
+
323
+ EXPECT_THROW (lib.getBookById (" raycharles" ), std::out_of_range);
324
+ EXPECT_EQ (0U , lib.filter (f).size ());
325
+
326
+ // make sure that Library::filter() doesn't add an empty book with
327
+ // an id surviving in the search DB
328
+ EXPECT_THROW (lib.getBookById (" raycharles" ), std::out_of_range);
329
+ };
330
+
286
331
};
0 commit comments