// 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/address_combobox_model.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/test_personal_data_manager.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/region_data.h" namespace autofill { namespace { const char kAppLocale[] = "fr-CA"; } TEST(AddressComboboxModelTest, Empty) { TestPersonalDataManager test_personal_data_manager; test_personal_data_manager.SetAutofillProfileEnabled(true); AddressComboboxModel model(test_personal_data_manager, kAppLocale, ""); EXPECT_EQ(1, model.GetItemCount()); EXPECT_FALSE(model.IsItemSeparatorAt(0)); EXPECT_TRUE(model.GetItemIdentifierAt(0).empty()); EXPECT_EQ(-1, model.GetIndexOfIdentifier("Anything")); } TEST(AddressComboboxModelTest, OneAddress) { TestPersonalDataManager test_personal_data_manager; test_personal_data_manager.SetAutofillProfileEnabled(true); AutofillProfile profile1(test::GetFullProfile()); test_personal_data_manager.AddProfile(profile1); AddressComboboxModel model(test_personal_data_manager, kAppLocale, profile1.guid()); EXPECT_EQ(3, model.GetItemCount()); EXPECT_FALSE(model.IsItemSeparatorAt(0)); EXPECT_TRUE(model.IsItemSeparatorAt(1)); EXPECT_TRUE(model.GetItemIdentifierAt(0).empty()); EXPECT_TRUE(model.GetItemIdentifierAt(1).empty()); EXPECT_EQ(-1, model.GetIndexOfIdentifier("Anything")); EXPECT_EQ(profile1.guid(), model.GetItemIdentifierAt(2)); EXPECT_EQ(2, model.GetIndexOfIdentifier(profile1.guid())); EXPECT_EQ(2, model.GetDefaultIndex()); } TEST(AddressComboboxModelTest, TwoAddresses) { TestPersonalDataManager test_personal_data_manager; test_personal_data_manager.SetAutofillProfileEnabled(true); AutofillProfile profile1(test::GetFullProfile()); AutofillProfile profile2(test::GetFullProfile2()); // Force |profile1| to be shown first in the combobox. profile1.set_use_count(100); test_personal_data_manager.AddProfile(profile1); test_personal_data_manager.AddProfile(profile2); AddressComboboxModel model(test_personal_data_manager, kAppLocale, profile2.guid()); EXPECT_EQ(4, model.GetItemCount()); EXPECT_FALSE(model.IsItemSeparatorAt(0)); EXPECT_TRUE(model.IsItemSeparatorAt(1)); EXPECT_TRUE(model.GetItemIdentifierAt(0).empty()); EXPECT_TRUE(model.GetItemIdentifierAt(1).empty()); EXPECT_EQ(-1, model.GetIndexOfIdentifier("Anything")); EXPECT_EQ(profile1.guid(), model.GetItemIdentifierAt(2)); EXPECT_EQ(profile2.guid(), model.GetItemIdentifierAt(3)); EXPECT_EQ(2, model.GetIndexOfIdentifier(profile1.guid())); EXPECT_EQ(3, model.GetIndexOfIdentifier(profile2.guid())); EXPECT_EQ(3, model.GetDefaultIndex()); } TEST(AddressComboboxModelTest, AddAnAddress) { TestPersonalDataManager test_personal_data_manager; test_personal_data_manager.SetAutofillProfileEnabled(true); AutofillProfile profile1(test::GetFullProfile()); test_personal_data_manager.AddProfile(profile1); AddressComboboxModel model(test_personal_data_manager, kAppLocale, ""); EXPECT_EQ(3, model.GetItemCount()); EXPECT_EQ(profile1.guid(), model.GetItemIdentifierAt(2)); EXPECT_EQ(2, model.GetIndexOfIdentifier(profile1.guid())); AutofillProfile profile2(test::GetFullProfile2()); int new_profile_index = model.AddNewProfile(profile2); EXPECT_EQ(3, new_profile_index); EXPECT_EQ(4, model.GetItemCount()); EXPECT_EQ(profile2.guid(), model.GetItemIdentifierAt(3)); EXPECT_EQ(3, model.GetIndexOfIdentifier(profile2.guid())); // First profile shouldn't have changed, here the order is guaranteed. EXPECT_EQ(profile1.guid(), model.GetItemIdentifierAt(2)); EXPECT_EQ(2, model.GetIndexOfIdentifier(profile1.guid())); } } // namespace autofill