| 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);
|
| +}
|
| +
|
| +}
|
|
|