Merge pull request #506 from kiwix/library_filtering_by_empty_query

Empty query acts as a match-all query
This commit is contained in:
Matthieu Gautier 2021-05-10 10:27:37 +02:00 committed by GitHub
commit 6aab9b6981
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 1 deletions

View File

@ -327,7 +327,7 @@ bool willSelectEverything(const Xapian::Query& query)
Xapian::Query buildXapianQueryFromFilterQuery(const Filter& filter) 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 // This is a thread-safe way to construct an equivalent of
// a Xapian::Query::MatchAll query // a Xapian::Query::MatchAll query
return Xapian::Query(std::string()); return Xapian::Query(std::string());

View File

@ -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) TEST_F(LibraryTest, filterByCreator)
{ {
EXPECT_FILTER_RESULTS(kiwix::Filter().creator("Wikipedia"), EXPECT_FILTER_RESULTS(kiwix::Filter().creator("Wikipedia"),