diff --git a/src/library.cpp b/src/library.cpp index 038052a3..d3e6333e 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -645,8 +645,6 @@ Xapian::Query buildXapianQueryFromFilterQuery(const Filter& filter) //queryParser.set_stemmer(Xapian::Stem(iso639_3ToXapian(???))); //queryParser.set_stemming_strategy(Xapian::QueryParser::STEM_SOME); const auto flags = Xapian::QueryParser::FLAG_PHRASE - | Xapian::QueryParser::FLAG_BOOLEAN - | Xapian::QueryParser::FLAG_BOOLEAN_ANY_CASE | Xapian::QueryParser::FLAG_LOVEHATE | Xapian::QueryParser::FLAG_WILDCARD | partialQueryFlag; diff --git a/test/library_server.cpp b/test/library_server.cpp index e5cc2bd2..5159ffb3 100644 --- a/test/library_server.cpp +++ b/test/library_server.cpp @@ -781,27 +781,67 @@ TEST_F(LibraryServerTest, catalog_v2_entries_filtered_by_search_terms) TEST_F(LibraryServerTest, catalog_v2_entries_filtering_special_queries) { { - // 'or' acts as a Xapian boolean operator, resulting in malformed query + // 'or' doesn't act as a Xapian boolean operator const auto r = zfs1_->GET("/ROOT%23%3F/catalog/v2/entries?q=Or"); - EXPECT_EQ(r->status, 500); + EXPECT_EQ(r->status, 200); + EXPECT_EQ(maskVariableOPDSFeedData(r->body), + CATALOG_V2_ENTRIES_PREAMBLE("?q=Or") + " Filtered Entries (q=Or)\n" + " YYYY-MM-DDThh:mm:ssZ\n" + " 1\n" + " 0\n" + " 1\n" + CHARLES_RAY_CATALOG_ENTRY + "\n" + ); } { - // 'and' acts as a Xapian boolean operator, resulting in malformed query + // 'and' doesn't act as a Xapian boolean operator const auto r = zfs1_->GET("/ROOT%23%3F/catalog/v2/entries?q=and"); - EXPECT_EQ(r->status, 500); + EXPECT_EQ(r->status, 200); + EXPECT_EQ(maskVariableOPDSFeedData(r->body), + CATALOG_V2_ENTRIES_PREAMBLE("?q=and") + " Filtered Entries (q=and)\n" + " YYYY-MM-DDThh:mm:ssZ\n" + " 1\n" + " 0\n" + " 1\n" + CHARLES_RAY_CATALOG_ENTRY + "\n" + ); } { - // 'not' acts as a Xapian boolean operator, resulting in malformed query + // 'not' doesn't act as a Xapian boolean operator const auto r = zfs1_->GET("/ROOT%23%3F/catalog/v2/entries?q=not"); - EXPECT_EQ(r->status, 500); + EXPECT_EQ(r->status, 200); + EXPECT_EQ(maskVariableOPDSFeedData(r->body), + CATALOG_V2_ENTRIES_PREAMBLE("?q=not") + " Filtered Entries (q=not)\n" + " YYYY-MM-DDThh:mm:ssZ\n" + " 1\n" + " 0\n" + " 1\n" + RAY_CHARLES_CATALOG_ENTRY + "\n" + ); } { - // 'xor' acts as a Xapian boolean operator, resulting in malformed query + // 'xor' doesn't act as a Xapian boolean operator const auto r = zfs1_->GET("/ROOT%23%3F/catalog/v2/entries?q=xor"); - EXPECT_EQ(r->status, 500); + EXPECT_EQ(r->status, 200); + EXPECT_EQ(maskVariableOPDSFeedData(r->body), + CATALOG_V2_ENTRIES_PREAMBLE("?q=xor") + " Filtered Entries (q=xor)\n" + " YYYY-MM-DDThh:mm:ssZ\n" + " 1\n" + " 0\n" + " 1\n" + UNCATEGORIZED_RAY_CHARLES_CATALOG_ENTRY + "\n" + ); } { @@ -812,12 +852,10 @@ TEST_F(LibraryServerTest, catalog_v2_entries_filtering_special_queries) CATALOG_V2_ENTRIES_PREAMBLE("?q=wikipedia%20or%20library") " Filtered Entries (q=wikipedia%20or%20library)\n" " YYYY-MM-DDThh:mm:ssZ\n" - " 3\n" + " 1\n" " 0\n" - " 3\n" - UNCATEGORIZED_RAY_CHARLES_CATALOG_ENTRY + " 1\n" CHARLES_RAY_CATALOG_ENTRY - RAY_CHARLES_CATALOG_ENTRY "\n" ); } @@ -830,11 +868,10 @@ TEST_F(LibraryServerTest, catalog_v2_entries_filtering_special_queries) CATALOG_V2_ENTRIES_PREAMBLE("?q=wikipedia%20and%20articles") " Filtered Entries (q=wikipedia%20and%20articles)\n" " YYYY-MM-DDThh:mm:ssZ\n" - " 2\n" + " 1\n" " 0\n" - " 2\n" + " 1\n" CHARLES_RAY_CATALOG_ENTRY - RAY_CHARLES_CATALOG_ENTRY "\n" ); }