blob: 254759fb9de4c08a70debf6e86bbc832525552c5 [file] [log] [blame]
// Copyright 2024 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/people/people_api_request_types.h"
#include <utility>
#include "base/test/values_test_util.h"
#include "base/values.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace google_apis::people {
namespace {
using ::base::test::IsJson;
TEST(PeopleApiRequestTypesTest, EmailWithNoFieldsToDict) {
EmailAddress email;
base::Value::Dict dict = std::move(email).ToDict();
EXPECT_THAT(dict, IsJson("{}"));
}
TEST(PeopleApiRequestTypesTest, EmailWithOnlyValueToDict) {
EmailAddress email;
email.value = "afrancois@example.com";
base::Value::Dict dict = std::move(email).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"value": "afrancois@example.com",
})json"));
}
TEST(PeopleApiRequestTypesTest, EmailWithMultipleFieldsToDict) {
EmailAddress email;
email.value = "afrancois@example.com";
email.type = "home";
base::Value::Dict dict = std::move(email).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"value": "afrancois@example.com",
"type": "home",
})json"));
}
TEST(PeopleApiRequestTypesTest, NameWithNoFieldsToDict) {
Name name;
base::Value::Dict dict = std::move(name).ToDict();
EXPECT_THAT(dict, IsJson("{}"));
}
TEST(PeopleApiRequestTypesTest, NameWithFamilyNameToDict) {
Name name;
name.family_name = "Francois";
base::Value::Dict dict = std::move(name).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"familyName": "Francois",
})json"));
}
TEST(PeopleApiRequestTypesTest, NameWithGivenNameToDict) {
Name name;
name.given_name = "Andre";
base::Value::Dict dict = std::move(name).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"givenName": "Andre",
})json"));
}
TEST(PeopleApiRequestTypesTest, NameWithMultipleFieldsToDict) {
Name name;
name.family_name = "Francois";
name.given_name = "Andre";
base::Value::Dict dict = std::move(name).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"familyName": "Francois",
"givenName": "Andre",
})json"));
}
TEST(PeopleApiRequestTypesTest, PhoneWithNoFieldsToDict) {
PhoneNumber phone;
base::Value::Dict dict = std::move(phone).ToDict();
EXPECT_THAT(dict, IsJson("{}"));
}
TEST(PeopleApiRequestTypesTest, PhoneWithOnlyValueToDict) {
PhoneNumber phone;
phone.value = "+61400000000";
base::Value::Dict dict = std::move(phone).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"value": "+61400000000",
})json"));
}
TEST(PeopleApiRequestTypesTest, PhoneWithMultipleFieldsToDict) {
PhoneNumber phone;
phone.value = "+61400000000";
phone.type = "mobile";
base::Value::Dict dict = std::move(phone).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"value": "+61400000000",
"type": "mobile",
})json"));
}
TEST(PeopleApiRequestTypesTest, ContactWithNoFieldsToDict) {
Contact contact;
base::Value::Dict dict = std::move(contact).ToDict();
EXPECT_THAT(dict, IsJson("{}"));
}
TEST(PeopleApiRequestTypesTest, ContactWithOneEmailToDict) {
Contact contact;
EmailAddress email;
email.value = "afrancois@example.com";
contact.email_addresses.push_back(std::move(email));
base::Value::Dict dict = std::move(contact).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"emailAddresses": [
{
"value": "afrancois@example.com",
},
],
})json"));
}
TEST(PeopleApiRequestTypesTest, ContactWithMultipleEmailsToDict) {
Contact contact;
EmailAddress home_email;
home_email.value = "afrancois@example.com";
home_email.type = "home";
contact.email_addresses.push_back(std::move(home_email));
EmailAddress work_email;
work_email.value = "afrancois@work.example.com";
work_email.type = "work";
contact.email_addresses.push_back(std::move(work_email));
base::Value::Dict dict = std::move(contact).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"emailAddresses": [
{
"value": "afrancois@example.com",
"type": "home",
},
{
"value": "afrancois@work.example.com",
"type": "work",
},
],
})json"));
}
TEST(PeopleApiRequestTypesTest, ContactWithNameToDict) {
Contact contact;
contact.name.family_name = "Francois";
contact.name.given_name = "Andre";
base::Value::Dict dict = std::move(contact).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"names": [
{
"familyName": "Francois",
"givenName": "Andre",
},
],
})json"));
}
TEST(PeopleApiRequestTypesTest, ContactWithOnePhoneToDict) {
Contact contact;
PhoneNumber phone;
phone.value = "+61400000000";
contact.phone_numbers.push_back(std::move(phone));
base::Value::Dict dict = std::move(contact).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"phoneNumbers": [
{
"value": "+61400000000",
},
],
})json"));
}
TEST(PeopleApiRequestTypesTest, ContactWithMultiplePhonesToDict) {
Contact contact;
PhoneNumber mobile_number;
mobile_number.value = "+61400000000";
mobile_number.type = "mobile";
contact.phone_numbers.push_back(std::move(mobile_number));
PhoneNumber home_number;
home_number.value = "+61390000000";
home_number.type = "home";
contact.phone_numbers.push_back(std::move(home_number));
base::Value::Dict dict = std::move(contact).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"phoneNumbers": [
{
"value": "+61400000000",
"type": "mobile",
},
{
"value": "+61390000000",
"type": "home",
},
],
})json"));
}
TEST(PeopleApiRequestTypesTest, ContactWithMultipleFieldsToDict) {
Contact contact;
EmailAddress home_email;
home_email.value = "afrancois@example.com";
home_email.type = "home";
contact.email_addresses.push_back(std::move(home_email));
EmailAddress work_email;
work_email.value = "afrancois@work.example.com";
work_email.type = "work";
contact.email_addresses.push_back(std::move(work_email));
Name name;
name.family_name = "Francois";
name.given_name = "Andre";
contact.name = std::move(name);
PhoneNumber mobile_number;
mobile_number.value = "+61400000000";
mobile_number.type = "mobile";
contact.phone_numbers.push_back(std::move(mobile_number));
PhoneNumber home_number;
home_number.value = "+61390000000";
home_number.type = "home";
contact.phone_numbers.push_back(std::move(home_number));
base::Value::Dict dict = std::move(contact).ToDict();
EXPECT_THAT(dict, IsJson(R"json({
"emailAddresses": [
{
"value": "afrancois@example.com",
"type": "home",
},
{
"value": "afrancois@work.example.com",
"type": "work",
},
],
"names": [
{
"familyName": "Francois",
"givenName": "Andre",
},
],
"phoneNumbers": [
{
"value": "+61400000000",
"type": "mobile",
},
{
"value": "+61390000000",
"type": "home",
},
],
})json"));
}
} // namespace
} // namespace google_apis::people