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

Unified Diff: chrome/browser/autofill/autofill_dialog_controller_mac_unittest.mm

Issue 558066: Autofill dialog for the Mac. This is UI only at this point. The UI is not h... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 10 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/autofill/autofill_dialog_controller_mac_unittest.mm
===================================================================
--- chrome/browser/autofill/autofill_dialog_controller_mac_unittest.mm (revision 0)
+++ chrome/browser/autofill/autofill_dialog_controller_mac_unittest.mm (revision 0)
@@ -0,0 +1,205 @@
+// Copyright (c) 2009 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.
+
+#import "chrome/browser/autofill/autofill_address_model_mac.h"
+#import "chrome/browser/autofill/autofill_address_view_controller_mac.h"
+#import "chrome/browser/autofill/autofill_credit_card_model_mac.h"
+#import "chrome/browser/autofill/autofill_credit_card_view_controller_mac.h"
+#import "chrome/browser/autofill/autofill_dialog_controller_mac.h"
+#include "chrome/browser/autofill/autofill_profile.h"
+#include "chrome/browser/cocoa/browser_test_helper.h"
+#import "chrome/browser/cocoa/cocoa_test_helper.h"
+#include "chrome/browser/profile.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+class AutoFillDialogObserverTester : public AutoFillDialogObserver {
+ public:
+ AutoFillDialogObserverTester() : hit_(false) {}
+ virtual ~AutoFillDialogObserverTester() {}
+
+ virtual void OnAutoFillDialogApply(
+ std::vector<AutoFillProfile>* profiles,
+ std::vector<CreditCard>* credit_cards) {
+ hit_ = true;
+
+ std::vector<AutoFillProfile>::iterator i;
+ profiles_.clear();
+ for (i = profiles->begin(); i != profiles->end(); ++i)
+ profiles_.push_back(*i);
+
+ std::vector<CreditCard>::iterator j;
+ credit_cards_.clear();
+ for (j = credit_cards->begin(); j != credit_cards->end(); ++j)
+ credit_cards_.push_back(*j);
+ }
+
+ bool hit_;
+ std::vector<AutoFillProfile> profiles_;
+ std::vector<CreditCard> credit_cards_;
+};
+
+class AutoFillDialogControllerTest : public CocoaTest {
+ public:
+ AutoFillDialogControllerTest() {}
+
+ void LoadDialog() {
+ controller_ = [AutoFillDialogController
+ controllerWithObserver:&observer_
+ autoFillProfiles:profiles_
+ creditCards:credit_cards_];
+ [controller_ window];
+ }
+
+ BrowserTestHelper helper_;
+ AutoFillDialogObserverTester observer_;
+ AutoFillDialogController* controller_; // weak reference
+ std::vector<AutoFillProfile*> profiles_; // weak references within vector
+ std::vector<CreditCard*> credit_cards_; // weak references within vector
+};
+
+TEST_F(AutoFillDialogControllerTest, SaveButtonInformsObserver) {
+ LoadDialog();
+ [controller_ save:nil];
+ ASSERT_TRUE(observer_.hit_);
+}
+
+TEST_F(AutoFillDialogControllerTest, CancelButtonDoesNotInformObserver) {
+ LoadDialog();
+ [controller_ cancel:nil];
+ ASSERT_FALSE(observer_.hit_);
+}
+
+TEST_F(AutoFillDialogControllerTest, NoEditsGiveBackOriginalProfile) {
+ AutoFillProfile profile;
+ profiles_.push_back(&profile);
+ LoadDialog();
+ [controller_ save:nil];
+
+ // Should hit our observer.
+ ASSERT_TRUE(observer_.hit_);
+
+ // Sizes should match.
+ ASSERT_EQ(observer_.profiles_.size(), profiles_.size());
+
+ // Contents should match.
+ size_t i = 0;
+ size_t count = profiles_.size();
+ for (i = 0; i < count; i++)
+ ASSERT_EQ(observer_.profiles_[i], *profiles_[i]);
+
+ // Contents should not match a different profile.
+ AutoFillProfile differentProfile;
+ differentProfile.set_label(ASCIIToUTF16("different"));
+ differentProfile.SetInfo(AutoFillType(NAME_FIRST), ASCIIToUTF16("joe"));
+ for (i = 0; i < count; i++)
+ ASSERT_NE(observer_.profiles_[i], differentProfile);
+}
+
+TEST_F(AutoFillDialogControllerTest, NoEditsGiveBackOriginalCreditCard) {
+ CreditCard creditCard(ASCIIToUTF16("myCC"), 345);
+ credit_cards_.push_back(&creditCard);
+ LoadDialog();
+ [controller_ save:nil];
+
+ // Should hit our observer.
+ ASSERT_TRUE(observer_.hit_);
+
+ // Sizes should match.
+ ASSERT_EQ(observer_.credit_cards_.size(), credit_cards_.size());
+
+ // Contents should match.
+ size_t i = 0;
+ size_t count = credit_cards_.size();
+ for (i = 0; i < count; i++)
+ ASSERT_EQ(observer_.credit_cards_[i], *credit_cards_[i]);
+
+ // Contents should not match a different profile.
+ CreditCard differentCreditCard(ASCIIToUTF16("different"), 0);
+ differentCreditCard.SetInfo(
+ AutoFillType(CREDIT_CARD_NUMBER), ASCIIToUTF16("1234"));
+ for (i = 0; i < count; i++)
+ ASSERT_NE(observer_.credit_cards_[i], differentCreditCard);
+}
+
+TEST_F(AutoFillDialogControllerTest, AutoFillDataMutation) {
+ AutoFillProfile profile(ASCIIToUTF16("Home"), 17);
+ profile.SetInfo(AutoFillType(NAME_FIRST), ASCIIToUTF16("David"));
+ profile.SetInfo(AutoFillType(NAME_MIDDLE), ASCIIToUTF16("C"));
+ profile.SetInfo(AutoFillType(NAME_LAST), ASCIIToUTF16("Holloway"));
+ profile.SetInfo(AutoFillType(EMAIL_ADDRESS),
+ ASCIIToUTF16("dhollowa@chromium.org"));
+ profile.SetInfo(AutoFillType(COMPANY_NAME), ASCIIToUTF16("Google Inc."));
+ profile.SetInfo(
+ AutoFillType(ADDRESS_HOME_LINE1), ASCIIToUTF16("1122 Mountain View Road"));
+ profile.SetInfo(AutoFillType(ADDRESS_HOME_LINE2), ASCIIToUTF16("Suite #1"));
+ profile.SetInfo(AutoFillType(ADDRESS_HOME_CITY),
+ ASCIIToUTF16("Mountain View"));
+ profile.SetInfo(AutoFillType(ADDRESS_HOME_STATE), ASCIIToUTF16("CA"));
+ profile.SetInfo(AutoFillType(ADDRESS_HOME_ZIP), ASCIIToUTF16("94111"));
+ profile.SetInfo(AutoFillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("USA"));
+ profile.SetInfo(AutoFillType(PHONE_HOME_COUNTRY_CODE), ASCIIToUTF16("01"));
+ profile.SetInfo(AutoFillType(PHONE_HOME_CITY_CODE), ASCIIToUTF16("415"));
+ profile.SetInfo(AutoFillType(PHONE_HOME_NUMBER), ASCIIToUTF16("5552258"));
+ profile.SetInfo(AutoFillType(PHONE_FAX_COUNTRY_CODE), ASCIIToUTF16("02"));
+ profile.SetInfo(AutoFillType(PHONE_FAX_CITY_CODE), ASCIIToUTF16("408"));
+ profile.SetInfo(AutoFillType(PHONE_FAX_NUMBER), ASCIIToUTF16("7172258"));
+ profiles_.push_back(&profile);
+
+ LoadDialog();
+
+ AutoFillAddressModel* am = [[controller_ addressFormViewController]
+ addressModel];
+ EXPECT_TRUE([[am firstName] isEqualToString:@"David"]);
+ EXPECT_TRUE([[am middleName] isEqualToString:@"C"]);
+ EXPECT_TRUE([[am lastName] isEqualToString:@"Holloway"]);
+ EXPECT_TRUE([[am email] isEqualToString:@"dhollowa@chromium.org"]);
+ EXPECT_TRUE([[am companyName] isEqualToString:@"Google Inc."]);
+ EXPECT_TRUE([[am addressLine1] isEqualToString:@"1122 Mountain View Road"]);
+ EXPECT_TRUE([[am addressLine2] isEqualToString:@"Suite #1"]);
+ EXPECT_TRUE([[am city] isEqualToString:@"Mountain View"]);
+ EXPECT_TRUE([[am state] isEqualToString:@"CA"]);
+ EXPECT_TRUE([[am zip] isEqualToString:@"94111"]);
+ EXPECT_TRUE([[am phoneCountryCode] isEqualToString:@"01"]);
+ EXPECT_TRUE([[am phoneAreaCode] isEqualToString:@"415"]);
+ EXPECT_TRUE([[am phoneNumber] isEqualToString:@"5552258"]);
+ EXPECT_TRUE([[am faxCountryCode] isEqualToString:@"02"]);
+ EXPECT_TRUE([[am faxAreaCode] isEqualToString:@"408"]);
+ EXPECT_TRUE([[am faxNumber] isEqualToString:@"7172258"]);
+
+ [controller_ save:nil];
+
+ ASSERT_TRUE(observer_.hit_);
+ ASSERT_TRUE(observer_.profiles_.size() == 1);
+}
+
+TEST_F(AutoFillDialogControllerTest, CreditCardDataMutation) {
+ CreditCard creditCard(ASCIIToUTF16("myCC"), 345);
+ creditCard.SetInfo(AutoFillType(CREDIT_CARD_NAME), ASCIIToUTF16("DCH"));
+ creditCard.SetInfo(
+ AutoFillType(CREDIT_CARD_NUMBER), ASCIIToUTF16("1234 5678 9101 1121"));
+ creditCard.SetInfo(AutoFillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("01"));
+ creditCard.SetInfo(
+ AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR), ASCIIToUTF16("2012"));
+ creditCard.SetInfo(
+ AutoFillType(CREDIT_CARD_VERIFICATION_CODE), ASCIIToUTF16("222"));
+ credit_cards_.push_back(&creditCard);
+
+ LoadDialog();
+
+ AutoFillCreditCardModel* cm = [[controller_ creditCardFormViewController]
+ creditCardModel];
+ EXPECT_TRUE([[cm nameOnCard] isEqualToString:@"DCH"]);
+ EXPECT_TRUE([[cm creditCardNumber] isEqualToString:@"1234 5678 9101 1121"]);
+ EXPECT_TRUE([[cm expirationMonth] isEqualToString:@"01"]);
+ EXPECT_TRUE([[cm expirationYear] isEqualToString:@"2012"]);
+ EXPECT_TRUE([[cm cvcCode] isEqualToString:@"222"]);
+
+ [controller_ save:nil];
+
+ ASSERT_TRUE(observer_.hit_);
+ ASSERT_TRUE(observer_.credit_cards_.size() == 1);
+}
+
+}
« no previous file with comments | « chrome/browser/autofill/autofill_dialog_controller_mac.mm ('k') | chrome/browser/autofill/autofill_dialog_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698