blob: 98c72e94942284d2342db101c081c9bfecddf688 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/libaddressinput/chromium/addressinput_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_data.h"
namespace autofill {
namespace addressinput {
using ::i18n::addressinput::AddressData;
using ::i18n::addressinput::AddressField;
using ::i18n::addressinput::AddressProblem;
TEST(AddressinputUtilTest, AddressRequiresRegionCode) {
AddressData address;
EXPECT_FALSE(HasAllRequiredFields(address));
}
TEST(AddressinputUtilTest, UsRequiresState) {
AddressData address;
address.region_code = "US";
address.postal_code = "90291";
// Leave state empty.
address.locality = "Los Angeles";
address.address_line.push_back("340 Main St.");
EXPECT_FALSE(HasAllRequiredFields(address));
}
TEST(AddressinputUtilTest, CompleteAddressReturnsTrue) {
AddressData address;
address.region_code = "US";
address.postal_code = "90291";
address.administrative_area = "CA";
address.locality = "Los Angeles";
address.address_line.push_back("340 Main St.");
EXPECT_TRUE(HasAllRequiredFields(address));
}
TEST(AddressinputUtilTest, MissingFieldsAreAddedToProblems) {
AddressData address;
address.region_code = "US";
// Leave postal code empty.
// Leave state empty.
address.locality = "Los Angeles";
address.address_line.push_back("340 Main St.");
std::multimap<AddressField, AddressProblem> empty_filter;
std::multimap<AddressField, AddressProblem> problems;
ValidateRequiredFields(address, &empty_filter, &problems);
EXPECT_EQ(problems.size(), 2);
}
TEST(AddressinputUtilTest, OnlyFieldsContainedInFilterAreAddedToProblems) {
AddressData address;
address.region_code = "US";
// Leave postal code empty.
// Leave state empty.
address.locality = "Los Angeles";
address.address_line.push_back("340 Main St.");
std::multimap<AddressField, AddressProblem> include_postal_code_filter;
include_postal_code_filter.insert(std::make_pair(
AddressField::POSTAL_CODE, AddressProblem::MISSING_REQUIRED_FIELD));
std::multimap<AddressField, AddressProblem> problems;
ValidateRequiredFields(address, &include_postal_code_filter, &problems);
ASSERT_EQ(problems.size(), 1);
EXPECT_EQ(problems.begin()->first, AddressField::POSTAL_CODE);
EXPECT_EQ(problems.begin()->second, AddressProblem::MISSING_REQUIRED_FIELD);
}
TEST(AddressinputUtilTest, AllMissingFieldsAreAddedToProblems) {
AddressData address;
address.region_code = "US";
// Leave postal code empty.
// Leave state empty.
address.locality = "Los Angeles";
address.address_line.push_back("340 Main St.");
std::multimap<AddressField, AddressProblem> empty_filter;
std::multimap<AddressField, AddressProblem> problems;
ValidateRequiredFieldsExceptFilteredOut(address, &empty_filter, &problems);
EXPECT_EQ(problems.size(), 2);
}
TEST(AddressinputUtilTest, FieldsContainedInFilterAreExcludedFromProblems) {
AddressData address;
address.region_code = "US";
// Leave postal code empty.
// Leave state empty.
address.locality = "Los Angeles";
address.address_line.push_back("340 Main St.");
std::multimap<AddressField, AddressProblem> exclude_postal_code_filter;
exclude_postal_code_filter.insert(std::make_pair(
AddressField::POSTAL_CODE, AddressProblem::MISSING_REQUIRED_FIELD));
std::multimap<AddressField, AddressProblem> problems;
ValidateRequiredFieldsExceptFilteredOut(address, &exclude_postal_code_filter,
&problems);
ASSERT_EQ(problems.size(), 1);
EXPECT_EQ(problems.begin()->first, AddressField::ADMIN_AREA);
EXPECT_EQ(problems.begin()->second, AddressProblem::MISSING_REQUIRED_FIELD);
}
} // namespace addressinput
} // namespace autofill