userver: /data/code/userver/libraries/protobuf/tests/json/null_value_to_json_test.cpp Source File
Loading...
Searching...
No Matches
null_value_to_json_test.cpp
1#include <gtest/gtest.h>
2
3#include <string>
4
5#include <userver/protobuf/json/convert.hpp>
6#include <userver/utest/assert_macros.hpp>
7
8#include "utils.hpp"
9
10USERVER_NAMESPACE_BEGIN
11
12namespace protobuf::json::tests {
13
14struct NullValueToJsonSuccessTestParam {
15 NullValueMessageData input = {};
16 std::string expected_json = {};
17 WriteOptions options = {};
18};
19
20class NullValueToJsonSuccessTest : public ::testing::TestWithParam<NullValueToJsonSuccessTestParam> {};
21
22INSTANTIATE_TEST_SUITE_P(
23 ,
24 NullValueToJsonSuccessTest,
25 ::testing::Values(
26 NullValueToJsonSuccessTestParam{NullValueMessageData{}, R"({})"},
27 NullValueToJsonSuccessTestParam{
28 NullValueMessageData{},
29 R"({"field1":null,"field3":[],"field4":{}})",
30 {.always_print_fields_with_no_presence = true}
31 },
32 NullValueToJsonSuccessTestParam{NullValueMessageData{.field2 = kNullConst}, R"({"field2":null})"},
33 NullValueToJsonSuccessTestParam{
34 NullValueMessageData{
35 .field2 = kNullConst,
36 .field3 = {kNullConst, kNullConst},
37 .field4 = {{1, kNullConst}, {2, kNullConst}}
38 },
39 R"({"field2":null,"field3":[null,null],"field4":{"1":null,"2":null}})"
40 }
41 )
42);
43
44TEST_P(NullValueToJsonSuccessTest, Test) {
45 const auto& param = GetParam();
46
47 auto input = PrepareTestData(param.input);
48 formats::json::Value json, expected_json, sample_json;
49
50 UASSERT_NO_THROW((json = MessageToJson(input, param.options)));
51 UASSERT_NO_THROW((expected_json = PrepareJsonTestData(param.expected_json)));
52 UASSERT_NO_THROW((sample_json = CreateSampleJson(input, param.options)));
53
54 EXPECT_EQ(json, expected_json);
55 EXPECT_EQ(expected_json, sample_json);
56}
57
58} // namespace protobuf::json::tests
59
60USERVER_NAMESPACE_END