Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc

Issue 145553009: rAc: use libaddressinput to validate international addresses. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
index 7a4bb238102d38ea9f7ab602137e403a54fda51d..9b78610fc17b82dbf2dcfcf374fe65c7d73954f6 100644
--- a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
+++ b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
@@ -5,6 +5,8 @@
#include <map>
#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "base/callback.h"
#include "base/command_line.h"
#include "base/guid.h"
#include "base/memory/scoped_ptr.h"
@@ -50,6 +52,8 @@
#include "grit/webkit_resources.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/libaddressinput/chromium/cpp/include/libaddressinput/address_data.h"
+#include "third_party/libaddressinput/chromium/cpp/include/libaddressinput/address_validator.h"
#include "ui/base/resource/resource_bundle.h"
#if defined(OS_WIN)
@@ -63,6 +67,12 @@ namespace autofill {
namespace {
+using ::i18n::addressinput::AddressData;
+using ::i18n::addressinput::AddressProblemFilter;
+using ::i18n::addressinput::AddressProblems;
+using ::i18n::addressinput::AddressValidator;
+using testing::AtLeast;
+using testing::Return;
using testing::_;
const char kFakeEmail[] = "user@chromium.org";
@@ -233,6 +243,23 @@ class TestAutofillDialogView : public AutofillDialogView {
DISALLOW_COPY_AND_ASSIGN(TestAutofillDialogView);
};
+class MockAddressValidator : public AddressValidator {
+ public:
+ MockAddressValidator() {
+ ON_CALL(*this, ValidateAddress(_, _, _)).WillByDefault(Return(SUCCESS));
+ }
+
+ virtual ~MockAddressValidator() {}
+
+ MOCK_METHOD1(LoadRules, void(const std::string& country_code));
+
+ MOCK_CONST_METHOD3(ValidateAddress,
+ ::i18n::addressinput::AddressValidator::Status(
+ const AddressData& address,
+ const AddressProblemFilter& filter,
+ AddressProblems* problems));
+};
+
class TestAutofillDialogController
: public AutofillDialogControllerImpl,
public base::SupportsWeakPtr<TestAutofillDialogController> {
@@ -278,6 +305,10 @@ class TestAutofillDialogController
return &test_manager_;
}
+ MockAddressValidator* GetMockValidator() {
+ return &mock_validator_;
+ }
+
wallet::MockWalletClient* GetTestingWalletClient() {
return &mock_wallet_client_;
}
@@ -324,6 +355,10 @@ class TestAutofillDialogController
GetTestingManager();
}
+ virtual AddressValidator* GetValidator() OVERRIDE {
+ return &mock_validator_;
+ }
+
virtual wallet::WalletClient* GetWalletClient() OVERRIDE {
return &mock_wallet_client_;
}
@@ -355,6 +390,11 @@ class TestAutofillDialogController
const AutofillMetrics& metric_logger_;
TestPersonalDataManager test_manager_;
testing::NiceMock<wallet::MockWalletClient> mock_wallet_client_;
+
+ // A mock validator object to prevent network requests and track when
+ // validation rules are loaded or validation attempts occur.
+ testing::NiceMock<MockAddressValidator> mock_validator_;
+
GURL open_tab_url_;
MockNewCreditCardBubbleController* mock_new_card_bubble_controller_;
@@ -2933,12 +2973,17 @@ TEST_F(AutofillDialogControllerTest, IconReservedForCreditCardField) {
}
}
-TEST_F(AutofillDialogControllerTest, CountryChangeUpdatesSection) {
- CommandLine* command_line = CommandLine::ForCurrentProcess();
- command_line->AppendSwitch(::switches::kEnableAutofillAddressI18n);
-
- Reset();
+class AutofillDialogControllerI18nTest : public AutofillDialogControllerTest {
+ public:
+ // AutofillDialogControllerTest implementation.
+ virtual void SetUp() OVERRIDE {
+ CommandLine* command_line = CommandLine::ForCurrentProcess();
+ command_line->AppendSwitch(::switches::kEnableAutofillAddressI18n);
+ AutofillDialogControllerTest::SetUp();
+ }
+};
+TEST_F(AutofillDialogControllerI18nTest, CountryChangeUpdatesSection) {
TestAutofillDialogView* view = controller()->GetView();
view->ClearSectionUpdates();
@@ -2978,4 +3023,39 @@ TEST_F(AutofillDialogControllerTest, CountryChangeUpdatesSection) {
EXPECT_EQ(1U, updates.size());
}
+MATCHER_P(CountryCode, country_code, "Checks country code of an AddressData") {
+ // |arg| is an AddressData object.
+ return arg.country_code == country_code;
+}
+
+TEST_F(AutofillDialogControllerI18nTest, CorrectCountryFromInputs) {
+ EXPECT_CALL(*controller()->GetMockValidator(),
+ ValidateAddress(CountryCode("CN"), _, _));
+
+ FieldValueMap billing_inputs;
+ billing_inputs[ADDRESS_BILLING_COUNTRY] = ASCIIToUTF16("China");
+ controller()->InputsAreValid(SECTION_BILLING, billing_inputs);
+
+ EXPECT_CALL(*controller()->GetMockValidator(),
+ ValidateAddress(CountryCode("FR"), _, _));
+
+ FieldValueMap shipping_inputs;
+ shipping_inputs[ADDRESS_HOME_COUNTRY] = ASCIIToUTF16("France");
+ controller()->InputsAreValid(SECTION_SHIPPING, shipping_inputs);
+}
+
+TEST_F(AutofillDialogControllerI18nTest, LoadValidationRules) {
+ ResetControllerWithFormData(DefaultFormData());
+ EXPECT_CALL(*controller()->GetMockValidator(), LoadRules("US"));
+ controller()->Show();
+
+ EXPECT_CALL(*controller()->GetMockValidator(), LoadRules("FR"));
+ controller()->UserEditedOrActivatedInput(SECTION_CC_BILLING,
+ ADDRESS_BILLING_COUNTRY,
+ gfx::NativeView(),
+ gfx::Rect(),
+ ASCIIToUTF16("France"),
+ true);
+}
+
} // namespace autofill
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc ('k') | chrome/browser/ui/autofill/autofill_dialog_i18n_input.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698