winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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 }