blob: 8cd420f48b0b9a97349c212bacdc495b45386fb8 [file] [log] [blame]
// Copyright 2017 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 "components/autofill/core/browser/region_combobox_model.h"
#include <memory>
#include "base/json/json_writer.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "components/autofill/core/browser/autofill_test_utils.h"
#include "components/autofill/core/browser/test_personal_data_manager.h"
#include "components/autofill/core/browser/test_region_data_loader.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/libaddressinput/src/cpp/include/libaddressinput/region_data.h"
namespace autofill {
// Strings used in more than one place and must be the same everywhere.
const char kQuebecCode[] = "QC";
const char kQuebecName[] = "Quebec";
const char kOntarioCode[] = "ON";
const char kOntarioName[] = "Ontario";
// Make sure the two regions returned by the source are properly set in the
// model.
TEST(RegionComboboxModelTest, QuebecOntarioRegions) {
TestRegionDataLoader test_region_data_loader;
RegionComboboxModel model;
model.LoadRegionData("", &test_region_data_loader, 0);
std::vector<std::pair<std::string, std::string>> regions;
regions.emplace_back(kQuebecCode, kQuebecName);
regions.emplace_back(kOntarioCode, kOntarioName);
test_region_data_loader.SendAsynchronousData(regions);
EXPECT_EQ(3, model.GetItemCount());
EXPECT_EQ(base::ASCIIToUTF16("---"), model.GetItemAt(0));
EXPECT_EQ(base::ASCIIToUTF16(kQuebecName), model.GetItemAt(1));
EXPECT_EQ(base::ASCIIToUTF16(kOntarioName), model.GetItemAt(2));
EXPECT_FALSE(model.failed_to_load_data());
}
// Make sure the combo box properly support source emptyness/failures.
TEST(RegionComboboxModelTest, FailingSource) {
TestRegionDataLoader test_region_data_loader;
RegionComboboxModel model;
model.LoadRegionData("", &test_region_data_loader, 0);
test_region_data_loader.SendAsynchronousData(
std::vector<std::pair<std::string, std::string>>());
// There's always 1 item, even in failure cases.
EXPECT_EQ(1, model.GetItemCount());
EXPECT_TRUE(model.failed_to_load_data());
}
} // namespace autofill