Skip to content

Commit

Permalink
bug chaotic: build fix for old gmock
Browse files Browse the repository at this point in the history
Tests: протестировано CI

Pull Request resolved: #776
commit_hash:501558764f4f45afcb745a1e3ad71f0f43da19ee
  • Loading branch information
segoon committed Nov 29, 2024
1 parent e0aefc2 commit dfb20c9
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 77 deletions.
11 changes: 2 additions & 9 deletions chaotic/src/chaotic/openapi/parameters_read_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ USERVER_NAMESPACE_BEGIN

namespace co = chaotic::openapi;

static constexpr co::Name kName{"foo"};

UTEST(OpenapiParametersRead, SourceHttpRequest) {
auto request = server::http::HttpRequestBuilder()
.AddRequestArg("foo", "bar")
Expand All @@ -19,8 +21,6 @@ UTEST(OpenapiParametersRead, SourceHttpRequest) {
.Build();
const auto& source = *request;

static constexpr co::Name kName{"foo"};

auto query_multi = co::ReadParameter<co::ArrayParameter<co::In::kQueryExplode, kName, ',', std::string>>(source);
auto query = co::ReadParameter<co::TrivialParameter<co::In::kQuery, kName, std::string>>(source);
auto path = co::ReadParameter<co::TrivialParameter<co::In::kPath, kName, std::string>>(source);
Expand All @@ -36,23 +36,20 @@ UTEST(OpenapiParametersRead, SourceHttpRequest) {

UTEST(OpenapiParametersRead, TypeBoolean) {
auto request = server::http::HttpRequestBuilder().AddRequestArg("foo", "true").Build();
static constexpr co::Name kName{"foo"};

bool foo{co::ReadParameter<co::TrivialParameter<co::In::kQuery, kName, bool>>(*request)};
EXPECT_EQ(foo, true);
}

UTEST(OpenapiParametersRead, TypeDouble) {
auto request = server::http::HttpRequestBuilder().AddRequestArg("foo", "12.2").Build();
static constexpr co::Name kName{"foo"};

double foo{co::ReadParameter<co::TrivialParameter<co::In::kQuery, kName, double>>(*request)};
EXPECT_EQ(foo, 12.2);
}

UTEST(OpenapiParametersRead, UserType) {
auto request = server::http::HttpRequestBuilder().AddRequestArg("foo", "12.2").Build();
static constexpr co::Name kName{"foo"};

using Decimal = decimal64::Decimal<10>;
Decimal foo{co::ReadParameter<co::TrivialParameter<co::In::kQuery, kName, std::string, Decimal>>(*request)};
Expand All @@ -61,15 +58,13 @@ UTEST(OpenapiParametersRead, UserType) {

UTEST(OpenapiParametersRead, TypeInt) {
auto request = server::http::HttpRequestBuilder().AddRequestArg("foo", "12").Build();
static constexpr co::Name kName{"foo"};

int foo{co::ReadParameter<co::TrivialParameter<co::In::kQuery, kName, int>>(*request)};
EXPECT_EQ(foo, 12);
}

UTEST(OpenapiParametersRead, TypeArrayOfString) {
auto request = server::http::HttpRequestBuilder().AddRequestArg("foo", "bar,baz").Build();
static constexpr co::Name kName{"foo"};

std::vector<std::string> foo{
co::ReadParameter<co::ArrayParameter<co::In::kQuery, kName, ',', std::string>>(*request)};
Expand All @@ -78,7 +73,6 @@ UTEST(OpenapiParametersRead, TypeArrayOfString) {

UTEST(OpenapiParametersRead, TypeArrayOfUser) {
auto request = server::http::HttpRequestBuilder().AddRequestArg("foo", "1.2,3.4").Build();
static constexpr co::Name kName{"foo"};

using Decimal = decimal64::Decimal<10>;
std::vector<Decimal> foo{
Expand All @@ -92,7 +86,6 @@ UTEST(OpenapiParametersRead, TypeStringExplode) {
.AddRequestArg("foo", "2")
.AddRequestArg("foo", "3")
.Build();
static constexpr co::Name kName{"foo"};

std::vector<int> foo{co::ReadParameter<co::ArrayParameter<co::In::kQueryExplode, kName, ',', int>>(*request)};
EXPECT_EQ(foo, (std::vector{1, 2, 3}));
Expand Down
112 changes: 44 additions & 68 deletions chaotic/src/chaotic/openapi/parameters_write_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,143 +26,130 @@ class ParameterSinkMock : public co::ParameterSinkBase {
MOCK_METHOD(void, SetMultiQuery, (std::string_view, std::vector<std::string>&&), (override));
};

UTEST(OpenapiParameters, Cookie) {
static constexpr co::Name kName{"test"};
static constexpr co::Name kTest{
"test",
};

UTEST(OpenapiParameters, Cookie) {
ParameterSinkMock sink;
EXPECT_CALL(sink, SetCookie("test", std::string{"value"}));
EXPECT_CALL(sink, SetCookie(std::string_view{"test"}, std::string{"value"}));

co::WriteParameter<co::TrivialParameter<co::In::kCookie, kName, std::string>>("value", sink);
co::WriteParameter<co::TrivialParameter<co::In::kCookie, kTest, std::string>>("value", sink);
}

UTEST(OpenapiParameters, Path) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetPath("test", std::string{"value"}));

co::WriteParameter<co::TrivialParameter<co::In::kPath, kName, std::string>>("value", sink);
co::WriteParameter<co::TrivialParameter<co::In::kPath, kTest, std::string>>("value", sink);
}

UTEST(OpenapiParameters, Header) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetHeader("test", std::string{"value"}));
EXPECT_CALL(sink, SetHeader(std::string_view{"test"}, std::string{"value"}));

co::WriteParameter<co::TrivialParameter<co::In::kHeader, kName, std::string>>("value", sink);
co::WriteParameter<co::TrivialParameter<co::In::kHeader, kTest, std::string>>("value", sink);
}

UTEST(OpenapiParameters, Query) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetQuery("test", std::string{"value"}));
EXPECT_CALL(sink, SetQuery(std::string_view{"test"}, std::string{"value"}));

co::WriteParameter<co::TrivialParameter<co::In::kQuery, kName, std::string>>("value", sink);
co::WriteParameter<co::TrivialParameter<co::In::kQuery, kTest, std::string>>("value", sink);
}

UTEST(OpenapiParameters, QueryExplode) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetMultiQuery("test", (std::vector<std::string>{"foo", "bar"})));
EXPECT_CALL(sink, SetMultiQuery(std::string_view{"test"}, (std::vector<std::string>{"foo", "bar"})));

co::WriteParameter<co::ArrayParameter<co::In::kQueryExplode, kName, ',', std::string>>(
co::WriteParameter<co::ArrayParameter<co::In::kQueryExplode, kTest, ',', std::string>>(
std::vector<std::string>{"foo", "bar"}, sink
);
}

UTEST(OpenapiParameters, QueryExplodeInteger) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetMultiQuery("test", (std::vector<std::string>{"1", "2"})));
EXPECT_CALL(sink, SetMultiQuery(std::string_view{"test"}, (std::vector<std::string>{"1", "2"})));

co::WriteParameter<co::ArrayParameter<co::In::kQueryExplode, kName, ',', int>>(std::vector<int>{1, 2}, sink);
co::WriteParameter<co::ArrayParameter<co::In::kQueryExplode, kTest, ',', int>>(std::vector<int>{1, 2}, sink);
}

UTEST(OpenapiParameters, QueryExplodeUser) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetMultiQuery("test", (std::vector<std::string>{"1.2", "3.4"})));
EXPECT_CALL(sink, SetMultiQuery(std::string_view{"test"}, (std::vector<std::string>{"1.2", "3.4"})));

using Decimal = decimal64::Decimal<10>;
co::WriteParameter<co::ArrayParameter<co::In::kQueryExplode, kName, ',', std::string, Decimal>>(
co::WriteParameter<co::ArrayParameter<co::In::kQueryExplode, kTest, ',', std::string, Decimal>>(
std::vector<Decimal>{Decimal{"1.2"}, Decimal{"3.4"}}, sink
);
}

UTEST(OpenapiParameters, CookieArray) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetCookie("test", std::string{"foo,bar"}));
EXPECT_CALL(sink, SetCookie(std::string_view{"test"}, std::string{"foo,bar"}));

co::WriteParameter<co::ArrayParameter<co::In::kCookie, kName, ',', std::string, std::string>>({"foo", "bar"}, sink);
co::WriteParameter<co::ArrayParameter<co::In::kCookie, kTest, ',', std::string, std::string>>({"foo", "bar"}, sink);
}

UTEST(OpenapiParameters, QueryArrayOfInteger) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetQuery("test", std::string{"1,2"}));
EXPECT_CALL(sink, SetQuery(std::string_view{"test"}, std::string{"1,2"}));

co::WriteParameter<co::ArrayParameter<co::In::kQuery, kName, ',', int>>({1, 2}, sink);
co::WriteParameter<co::ArrayParameter<co::In::kQuery, kTest, ',', int>>({1, 2}, sink);
}

UTEST(OpenapiParameters, QueryArrayOfUserTypes) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetQuery("test", std::string{"1.1,2.2"}));
EXPECT_CALL(sink, SetQuery(std::string_view{"test"}, std::string{"1.1,2.2"}));

using Decimal = decimal64::Decimal<10>;
co::WriteParameter<co::ArrayParameter<co::In::kQuery, kName, ',', std::string, Decimal>>(
co::WriteParameter<co::ArrayParameter<co::In::kQuery, kTest, ',', std::string, Decimal>>(
{Decimal{"1.1"}, Decimal{"2.2"}}, sink
);
}

UTEST(OpenapiParameters, UserType) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetCookie("test", std::string{"1.1"}));
EXPECT_CALL(sink, SetCookie(std::string_view{"test"}, std::string{"1.1"}));

using Decimal = decimal64::Decimal<10>;
co::WriteParameter<co::TrivialParameter<co::In::kCookie, kName, std::string, Decimal>>(Decimal{"1.1"}, sink);
co::WriteParameter<co::TrivialParameter<co::In::kCookie, kTest, std::string, Decimal>>(Decimal{"1.1"}, sink);
}

UTEST(OpenapiParameters, TypeBoolean) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetCookie("test", std::string{"true"}));
EXPECT_CALL(sink, SetCookie(std::string_view{"test"}, std::string{"true"}));

bool bool_var = true;
co::WriteParameter<co::TrivialParameter<co::In::kCookie, kName, bool>>(bool_var, sink);
co::WriteParameter<co::TrivialParameter<co::In::kCookie, kTest, bool>>(bool_var, sink);
}

UTEST(OpenapiParameters, TypeDouble) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetCookie("test", std::string{"2.1"}));
EXPECT_CALL(sink, SetCookie(std::string_view{"test"}, std::string{"2.1"}));

double double_var = 2.1;
co::WriteParameter<co::TrivialParameter<co::In::kCookie, kName, double>>(double_var, sink);
co::WriteParameter<co::TrivialParameter<co::In::kCookie, kTest, double>>(double_var, sink);
}

UTEST(OpenapiParameters, TypeInt) {
static constexpr co::Name kName{"test"};

ParameterSinkMock sink;
EXPECT_CALL(sink, SetCookie("test", std::string{"1"}));
EXPECT_CALL(sink, SetCookie(std::string_view{"test"}, std::string{"1"}));
int int_var = 1;
co::WriteParameter<co::TrivialParameter<co::In::kCookie, kName, int>>(int_var, sink);
co::WriteParameter<co::TrivialParameter<co::In::kCookie, kTest, int>>(int_var, sink);
}

static constexpr co::Name kName{
"name",
};

static constexpr co::Name kVar1{
"var1",
};
static constexpr co::Name kVar2{
"var2",
};

UTEST(OpenapiParameters, SinkHttpClient) {
auto http_client_ptr = utest::CreateHttpClient();
auto request = http_client_ptr->CreateRequest();
Expand All @@ -182,18 +169,8 @@ UTEST(OpenapiParameters, SinkHttpClient) {
return utest::HttpServerMock::HttpResponse{};
});

static constexpr co::Name kName{
"name",
};

co::ParameterSinkHttpClient sink(request, http_server.GetBaseUrl() + "/{name}");

static constexpr co::Name kVar1{
"var1",
};
static constexpr co::Name kVar2{
"var2",
};
co::WriteParameter<co::ArrayParameter<co::In::kQueryExplode, kVar1, ',', std::string>>(
std::vector<std::string>{"foo", "bar"}, sink
);
Expand All @@ -210,15 +187,14 @@ UTEST(OpenapiParameters, SinkHttpClient) {

UTEST(OpenapiParameters, InvalidPathVariable) {
ParameterSinkMock sink;
static constexpr co::Name kName{"test"};

EXPECT_THROW(
(co::WriteParameter<co::TrivialParameter<co::In::kPath, kName, std::string, std::string>>("foo?bar", sink)),
(co::WriteParameter<co::TrivialParameter<co::In::kPath, kTest, std::string, std::string>>("foo?bar", sink)),
std::runtime_error
);

EXPECT_THROW(
(co::WriteParameter<co::TrivialParameter<co::In::kPath, kName, std::string, std::string>>("foo/bar", sink)),
(co::WriteParameter<co::TrivialParameter<co::In::kPath, kTest, std::string, std::string>>("foo/bar", sink)),
std::runtime_error
);
}
Expand Down

0 comments on commit dfb20c9

Please sign in to comment.