diff --git a/test/server.cpp b/test/server.cpp index f90cdcae1..798d85f83 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -716,6 +716,70 @@ R"EXPECTEDRESPONSE([ } } +TEST_F(ServerTest, suggestions_in_range) +{ + /** + * Attempt to get 50 suggestions in steps of 5 + * The suggestions are returned in the json format + * [{sugg1}, {sugg2}, ... , {suggN}, {suggest ft search}] + * Assuming the number of suggestions = (occurance of "{" - 1) + */ + { + int suggCount = 0; + for (int i = 0; i < 10; i++) { + std::string url = "/ROOT/suggest?content=zimfile&term=ray&start=" + std::to_string(i*5) + "&count=5"; + const auto r = zfs1_->GET(url.c_str()); + std::string body = r->body; + int currCount = std::count(body.begin(), body.end(), '{') - 1; + ASSERT_EQ(currCount, 5); + suggCount += currCount; + } + ASSERT_EQ(suggCount, 50); + } + + // Attempt to get 10 suggestions in steps of 5 even though there are only 8 + { + std::string url = "/ROOT/suggest?content=zimfile&term=song+for+you&start=0&count=5"; + const auto r1 = zfs1_->GET(url.c_str()); + std::string body = r1->body; + int currCount = std::count(body.begin(), body.end(), '{') - 1; + ASSERT_EQ(currCount, 5); + + url = "/ROOT/suggest?content=zimfile&term=song+for+you&start=5&count=5"; + const auto r2 = zfs1_->GET(url.c_str()); + body = r2->body; + currCount = std::count(body.begin(), body.end(), '{') - 1; + ASSERT_EQ(currCount, 3); + } + + // Attempt to get 10 suggestions even though there is only 1 + { + std::string url = "/ROOT/suggest?content=zimfile&term=strong&start=0&count=5"; + const auto r = zfs1_->GET(url.c_str()); + std::string body = r->body; + int currCount = std::count(body.begin(), body.end(), '{') - 1; + ASSERT_EQ(currCount, 1); + } + + // No Suggestion + { + std::string url = "/ROOT/suggest?content=zimfile&term=oops&start=0&count=5"; + const auto r = zfs1_->GET(url.c_str()); + std::string body = r->body; + int currCount = std::count(body.begin(), body.end(), '{') - 1; + ASSERT_EQ(currCount, 0); + } + + // Out of bound value + { + std::string url = "/ROOT/suggest?content=zimfile&term=ray&start=-2&count=-1"; + const auto r = zfs1_->GET(url.c_str()); + std::string body = r->body; + int currCount = std::count(body.begin(), body.end(), '{') - 1; + ASSERT_EQ(currCount, 0); + } +} + //////////////////////////////////////////////////////////////////////////////// // Testing of the library-related functionality of the server //////////////////////////////////////////////////////////////////////////////// @@ -1367,70 +1431,6 @@ TEST_F(LibraryServerTest, catalog_v2_entries_filtered_by_search_terms) ); } -TEST_F(LibraryServerTest, suggestions_in_range) -{ - /** - * Attempt to get 50 suggestions in steps of 5 - * The suggestions are returned in the json format - * [{sugg1}, {sugg2}, ... , {suggN}, {suggest ft search}] - * Assuming the number of suggestions = (occurance of "{" - 1) - */ - { - int suggCount = 0; - for (int i = 0; i < 10; i++) { - std::string url = "/ROOT/suggest?content=zimfile&term=ray&start=" + std::to_string(i*5) + "&count=5"; - const auto r = zfs1_->GET(url.c_str()); - std::string body = r->body; - int currCount = std::count(body.begin(), body.end(), '{') - 1; - ASSERT_EQ(currCount, 5); - suggCount += currCount; - } - ASSERT_EQ(suggCount, 50); - } - - // Attempt to get 10 suggestions in steps of 5 even though there are only 8 - { - std::string url = "/ROOT/suggest?content=zimfile&term=song+for+you&start=0&count=5"; - const auto r1 = zfs1_->GET(url.c_str()); - std::string body = r1->body; - int currCount = std::count(body.begin(), body.end(), '{') - 1; - ASSERT_EQ(currCount, 5); - - url = "/ROOT/suggest?content=zimfile&term=song+for+you&start=5&count=5"; - const auto r2 = zfs1_->GET(url.c_str()); - body = r2->body; - currCount = std::count(body.begin(), body.end(), '{') - 1; - ASSERT_EQ(currCount, 3); - } - - // Attempt to get 10 suggestions even though there is only 1 - { - std::string url = "/ROOT/suggest?content=zimfile&term=strong&start=0&count=5"; - const auto r = zfs1_->GET(url.c_str()); - std::string body = r->body; - int currCount = std::count(body.begin(), body.end(), '{') - 1; - ASSERT_EQ(currCount, 1); - } - - // No Suggestion - { - std::string url = "/ROOT/suggest?content=zimfile&term=oops&start=0&count=5"; - const auto r = zfs1_->GET(url.c_str()); - std::string body = r->body; - int currCount = std::count(body.begin(), body.end(), '{') - 1; - ASSERT_EQ(currCount, 0); - } - - // Out of bound value - { - std::string url = "/ROOT/suggest?content=zimfile&term=ray&start=-2&count=-1"; - const auto r = zfs1_->GET(url.c_str()); - std::string body = r->body; - int currCount = std::count(body.begin(), body.end(), '{') - 1; - ASSERT_EQ(currCount, 0); - } -} - TEST_F(LibraryServerTest, catalog_v2_individual_entry_access) { const auto r = zfs1_->GET("/ROOT/catalog/v2/entry/raycharles");