SearchRequestSerializer.cpp (4044B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 #include "pch.h" 4 #include "TestCommon.h" 5 #include "TestRestRequestHandler.h" 6 #include <AppInstallerErrors.h> 7 #include <Rest/Schema/1_0/Json/SearchRequestSerializer.h> 8 #include <Rest/Schema/1_1/Json/SearchRequestSerializer.h> 9 10 using namespace TestCommon; 11 using namespace AppInstaller::Repository; 12 using namespace AppInstaller::Repository::Rest::Schema; 13 14 TEST_CASE("SearchRequestSerializer_InclusionsFilters", "[RestSource]") 15 { 16 SearchRequest searchRequest; 17 searchRequest.Inclusions.emplace_back(PackageMatchFilter(PackageMatchField::Id, MatchType::Substring, "Foo.Bar")); 18 searchRequest.Inclusions.emplace_back(PackageMatchFilter(PackageMatchField::Name, MatchType::Substring, "Foo")); 19 searchRequest.Filters.emplace_back(PackageMatchFilter(PackageMatchField::Moniker, MatchType::Exact, "FooBar")); 20 searchRequest.MaximumResults = 10; 21 22 V1_0::Json::SearchRequestSerializer serializer; 23 web::json::value actual = serializer.Serialize(searchRequest); 24 25 REQUIRE(!actual.is_null()); 26 REQUIRE(!actual.has_field(L"FetchAllManifests")); 27 REQUIRE(actual.at(L"MaximumResults").as_integer() == static_cast<int>(searchRequest.MaximumResults)); 28 29 // Inclusions 30 web::json::array inclusions = actual.at(L"Inclusions").as_array(); 31 REQUIRE(inclusions.size() == 2); 32 REQUIRE(inclusions.at(0).at(L"PackageMatchField").as_string() == L"PackageIdentifier"); 33 REQUIRE(inclusions.at(1).at(L"PackageMatchField").as_string() == L"PackageName"); 34 web::json::value requestMatch = inclusions.at(0).at(L"RequestMatch"); 35 REQUIRE(!requestMatch.is_null()); 36 REQUIRE(requestMatch.at(L"KeyWord").as_string() == L"Foo.Bar"); 37 REQUIRE(requestMatch.at(L"MatchType").as_string() == L"Substring"); 38 39 // Filters 40 web::json::array filters = actual.at(L"Filters").as_array(); 41 REQUIRE(filters.size() == 1); 42 REQUIRE(filters.at(0).at(L"PackageMatchField").as_string() == L"Moniker"); 43 web::json::value requestMatchFilter = filters.at(0).at(L"RequestMatch"); 44 REQUIRE(!requestMatchFilter.is_null()); 45 REQUIRE(requestMatchFilter.at(L"KeyWord").as_string() == L"FooBar"); 46 REQUIRE(requestMatchFilter.at(L"MatchType").as_string() == L"Exact"); 47 } 48 49 TEST_CASE("SearchRequestSerializer_Query", "[RestSource]") 50 { 51 SearchRequest searchRequest; 52 searchRequest.Query = RequestMatch(MatchType::Substring, "Foo.Bar"); 53 54 V1_0::Json::SearchRequestSerializer serializer; 55 web::json::value actual = serializer.Serialize(std::move(searchRequest)); 56 57 REQUIRE(!actual.is_null()); 58 web::json::value query = actual.at(L"Query"); 59 REQUIRE(query.at(L"KeyWord").as_string() == L"Foo.Bar"); 60 REQUIRE(query.at(L"MatchType").as_string() == L"Substring"); 61 } 62 63 TEST_CASE("SearchRequestSerializer_FetchAllManifests", "[RestSource]") 64 { 65 V1_0::Json::SearchRequestSerializer serializer; 66 web::json::value actual = serializer.Serialize({}); 67 68 REQUIRE(!actual.is_null()); 69 REQUIRE(actual.at(L"FetchAllManifests").as_bool()); 70 } 71 72 TEST_CASE("SearchRequestSerializer_NewFields", "[RestSource]") 73 { 74 SearchRequest searchRequest; 75 searchRequest.Inclusions.emplace_back(PackageMatchFilter(PackageMatchField::Id, MatchType::Substring, "Foo.Bar")); 76 searchRequest.Inclusions.emplace_back(PackageMatchFilter(PackageMatchField::Name, MatchType::Substring, "Foo")); 77 searchRequest.Filters.emplace_back(PackageMatchFilter(PackageMatchField::Market, MatchType::Exact, "FooBar")); 78 79 V1_0::Json::SearchRequestSerializer serializerV1_0; 80 web::json::value actual_1_0 = serializerV1_0.Serialize(searchRequest); 81 REQUIRE(!actual_1_0.is_null()); 82 REQUIRE(actual_1_0.at(L"Filters").as_array().size() == 0); 83 84 V1_1::Json::SearchRequestSerializer serializerV1_1; 85 web::json::value actual_1_1 = serializerV1_1.Serialize(searchRequest); 86 REQUIRE(!actual_1_1.is_null()); 87 REQUIRE(actual_1_1.at(L"Filters").as_array().size() == 1); 88 }