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

Side by Side Diff: chrome/browser/ui/views/payments/contact_info_editor_view_controller_browsertest.cc

Issue 2816083002: [WebPayments] Desktop implementation of Contact Editor (Closed)
Patch Set: fixing race condition in test Created 3 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <string>
6
7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h"
10 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h"
11 #include "components/autofill/core/browser/personal_data_manager.h"
12
13 namespace payments {
14
15 namespace {
16
17 const char kNameFull[] = "Kirby Puckett";
18 const char kPhoneNumber[] = "6515558946";
19 const char kPhoneNumberInvalid[] = "123";
20 const char kEmailAddress[] = "kirby@example.com";
21 const char kEmailAddressInvalid[] = "kirby";
22
23 std::string GetLocale() {
24 return g_browser_process->GetApplicationLocale();
25 }
26
27 } // namespace
28
29 class PaymentRequestContactInfoEditorTest
30 : public PaymentRequestBrowserTestBase {
31 protected:
32 PaymentRequestContactInfoEditorTest()
33 : PaymentRequestBrowserTestBase(
34 "/payment_request_contact_details_test.html") {}
35
36 PersonalDataLoadedObserverMock personal_data_observer_;
37 };
38
39 IN_PROC_BROWSER_TEST_F(PaymentRequestContactInfoEditorTest, HappyPath) {
40 InvokePaymentRequestUI();
41 OpenContactInfoScreen();
42 OpenContactInfoEditorScreen();
43
44 SetEditorTextfieldValue(base::ASCIIToUTF16(kNameFull), autofill::NAME_FULL);
45 SetEditorTextfieldValue(base::ASCIIToUTF16(kPhoneNumber),
46 autofill::PHONE_HOME_WHOLE_NUMBER);
47 SetEditorTextfieldValue(base::ASCIIToUTF16(kEmailAddress),
48 autofill::EMAIL_ADDRESS);
49
50 autofill::PersonalDataManager* personal_data_manager = GetDataManager();
51 personal_data_manager->AddObserver(&personal_data_observer_);
52
53 // Wait until the web database has been updated and the notification sent.
54 base::RunLoop data_loop;
55 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
56 .WillOnce(QuitMessageLoop(&data_loop));
57 ClickOnDialogViewAndWait(DialogViewID::EDITOR_SAVE_BUTTON);
58 data_loop.Run();
59
60 ASSERT_EQ(1UL, personal_data_manager->GetProfiles().size());
61 autofill::AutofillProfile* profile = personal_data_manager->GetProfiles()[0];
62 DCHECK(profile);
63
64 EXPECT_EQ(base::ASCIIToUTF16(kNameFull),
65 profile->GetInfo(autofill::AutofillType(autofill::NAME_FULL),
66 GetLocale()));
67 EXPECT_EQ(base::ASCIIToUTF16(kPhoneNumber),
68 profile->GetInfo(
69 autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER),
70 GetLocale()));
71 EXPECT_EQ(base::ASCIIToUTF16(kEmailAddress),
72 profile->GetInfo(autofill::AutofillType(autofill::EMAIL_ADDRESS),
73 GetLocale()));
74 }
75
76 IN_PROC_BROWSER_TEST_F(PaymentRequestContactInfoEditorTest, Validation) {
77 InvokePaymentRequestUI();
78 OpenContactInfoScreen();
79 OpenContactInfoEditorScreen();
80
81 // Insert invalid values into fields which have rules more complex than
82 // just emptiness, and an empty string into simple required fields.
83 SetEditorTextfieldValue(base::string16(), autofill::NAME_FULL);
84 SetEditorTextfieldValue(base::ASCIIToUTF16(kPhoneNumberInvalid),
85 autofill::PHONE_HOME_WHOLE_NUMBER);
86 SetEditorTextfieldValue(base::ASCIIToUTF16(kEmailAddressInvalid),
87 autofill::EMAIL_ADDRESS);
88
89 EXPECT_TRUE(IsEditorTextfieldInvalid(autofill::NAME_FULL));
90 EXPECT_TRUE(IsEditorTextfieldInvalid(autofill::PHONE_HOME_WHOLE_NUMBER));
91 EXPECT_TRUE(IsEditorTextfieldInvalid(autofill::EMAIL_ADDRESS));
92
93 // Correct the problems.
94 SetEditorTextfieldValue(base::ASCIIToUTF16(kNameFull), autofill::NAME_FULL);
95 SetEditorTextfieldValue(base::ASCIIToUTF16(kPhoneNumber),
96 autofill::PHONE_HOME_WHOLE_NUMBER);
97 SetEditorTextfieldValue(base::ASCIIToUTF16(kEmailAddress),
98 autofill::EMAIL_ADDRESS);
99
100 EXPECT_FALSE(IsEditorTextfieldInvalid(autofill::NAME_FULL));
101 EXPECT_FALSE(IsEditorTextfieldInvalid(autofill::PHONE_HOME_WHOLE_NUMBER));
102 EXPECT_FALSE(IsEditorTextfieldInvalid(autofill::EMAIL_ADDRESS));
103
104 autofill::PersonalDataManager* personal_data_manager = GetDataManager();
105 personal_data_manager->AddObserver(&personal_data_observer_);
106
107 // Wait until the web database has been updated and the notification sent.
108 base::RunLoop data_loop;
109 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
110 .WillOnce(QuitMessageLoop(&data_loop));
111 ClickOnDialogViewAndWait(DialogViewID::EDITOR_SAVE_BUTTON);
112 data_loop.Run();
113
114 ASSERT_EQ(1UL, personal_data_manager->GetProfiles().size());
115 autofill::AutofillProfile* profile = personal_data_manager->GetProfiles()[0];
116 DCHECK(profile);
117
118 EXPECT_EQ(base::ASCIIToUTF16(kNameFull),
119 profile->GetInfo(autofill::AutofillType(autofill::NAME_FULL),
120 GetLocale()));
121 EXPECT_EQ(base::ASCIIToUTF16(kPhoneNumber),
122 profile->GetInfo(
123 autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER),
124 GetLocale()));
125 EXPECT_EQ(base::ASCIIToUTF16(kEmailAddress),
126 profile->GetInfo(autofill::AutofillType(autofill::EMAIL_ADDRESS),
127 GetLocale()));
128 }
129
130 IN_PROC_BROWSER_TEST_F(PaymentRequestContactInfoEditorTest, ModifyExisting) {
131 autofill::PersonalDataManager* personal_data_manager = GetDataManager();
132 personal_data_manager->AddObserver(&personal_data_observer_);
133
134 autofill::AutofillProfile incomplete_profile;
135 incomplete_profile.SetInfo(autofill::AutofillType(autofill::NAME_FULL),
136 base::ASCIIToUTF16(kNameFull), GetLocale());
137 base::RunLoop populate_data_loop;
Mathieu 2017/04/24 12:13:59 I think you don't need 137-141 because we have Add
138 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
139 .WillOnce(QuitMessageLoop(&populate_data_loop));
140 personal_data_manager->AddProfile(incomplete_profile);
141 populate_data_loop.Run();
142
143 InvokePaymentRequestUI();
144 OpenContactInfoScreen();
145
146 views::View* list_view = dialog_view()->GetViewByID(
147 static_cast<int>(DialogViewID::CONTACT_INFO_SHEET_LIST_VIEW));
148 DCHECK(list_view);
149 ClickOnDialogViewAndWait(list_view->child_at(0));
150
151 // Do not set name: This should have been populated when opening the screen.
Mathieu 2017/04/24 12:13:59 Use PaymentRequestBrowserTestBase::GetEditorTextfi
152 SetEditorTextfieldValue(base::ASCIIToUTF16(kPhoneNumber),
153 autofill::PHONE_HOME_WHOLE_NUMBER);
154 SetEditorTextfieldValue(base::ASCIIToUTF16(kEmailAddress),
155 autofill::EMAIL_ADDRESS);
156
157 // Wait until the web database has been updated and the notification sent.
158 base::RunLoop save_data_loop;
159 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
160 .WillOnce(QuitMessageLoop(&save_data_loop));
161 ClickOnDialogViewAndWait(DialogViewID::EDITOR_SAVE_BUTTON);
162 save_data_loop.Run();
163
164 ASSERT_EQ(1UL, personal_data_manager->GetProfiles().size());
165 autofill::AutofillProfile* profile = personal_data_manager->GetProfiles()[0];
166 DCHECK(profile);
167
168 EXPECT_EQ(base::ASCIIToUTF16(kNameFull),
169 profile->GetInfo(autofill::AutofillType(autofill::NAME_FULL),
170 GetLocale()));
171 EXPECT_EQ(base::ASCIIToUTF16(kPhoneNumber),
172 profile->GetInfo(
173 autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER),
174 GetLocale()));
175 EXPECT_EQ(base::ASCIIToUTF16(kEmailAddress),
176 profile->GetInfo(autofill::AutofillType(autofill::EMAIL_ADDRESS),
177 GetLocale()));
178 }
179
180 } // namespace payments
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698