chromium/google_apis/tasks/tasks_api_request_types_unittest.cc

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "google_apis/tasks/tasks_api_request_types.h"

#include <string>

#include "google_apis/tasks/tasks_api_task_status.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace google_apis::tasks {

TEST(TasksApiRequestTypesTest, ConvertsToJson) {
  struct {
    TaskRequestPayload payload;
    std::string expected_json;
  } test_cases[] = {
      {{.status = TaskStatus::kCompleted}, "{\"status\":\"completed\"}"},
      {{.status = TaskStatus::kNeedsAction}, "{\"status\":\"needsAction\"}"},
      {{.status = TaskStatus::kUnknown}, "{}"},
      {{.title = "Lorem ipsum dolor sit amet",
        .status = TaskStatus::kCompleted},
       "{\"status\":\"completed\",\"title\":\"Lorem ipsum dolor sit amet\"}"},
      {{.title = "Lorem ipsum dolor sit amet",
        .status = TaskStatus::kNeedsAction},
       "{\"status\":\"needsAction\",\"title\":\"Lorem ipsum dolor sit amet\"}"},
      {{.title = "Lorem ipsum dolor sit amet", .status = TaskStatus::kUnknown},
       "{\"title\":\"Lorem ipsum dolor sit amet\"}"},
  };

  for (const auto& tc : test_cases) {
    EXPECT_EQ(tc.payload.ToJson(), tc.expected_json);
  }
}

}  // namespace google_apis::tasks