diff --git a/src/library.cpp b/src/library.cpp index 8a49af35e..d8307c9ae 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -327,7 +327,7 @@ bool willSelectEverything(const Xapian::Query& query) Xapian::Query buildXapianQueryFromFilterQuery(const Filter& filter) { - if ( !filter.hasQuery() ) { + if ( !filter.hasQuery() || filter.getQuery().empty() ) { // This is a thread-safe way to construct an equivalent of // a Xapian::Query::MatchAll query return Xapian::Query(std::string()); diff --git a/test/library.cpp b/test/library.cpp index be2df95c9..247818990 100644 --- a/test/library.cpp +++ b/test/library.cpp @@ -479,6 +479,24 @@ TEST_F(LibraryTest, filterByQuery) } +TEST_F(LibraryTest, filteringByEmptyQueryReturnsAllEntries) +{ + EXPECT_FILTER_RESULTS(kiwix::Filter().query(""), + "An example ZIM archive", + "Encyclopédie de la Tunisie", + "Granblue Fantasy Wiki", + "Géographie par Wikipédia", + "Islam Stack Exchange", + "Mathématiques", + "Movies & TV Stack Exchange", + "Mythology & Folklore Stack Exchange", + "Ray Charles", + "TED talks - Business", + "Tania Louis", + "Wikiquote" + ); +} + TEST_F(LibraryTest, filterByCreator) { EXPECT_FILTER_RESULTS(kiwix::Filter().creator("Wikipedia"),