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

Side by Side Diff: chrome/browser/ui/cocoa/browser/edit_search_engine_cocoa_controller_unittest.mm

Issue 1951153002: Remove AddSearchProvider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: obsolescence date Created 4 years, 7 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 (c) 2012 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 #import "chrome/browser/ui/cocoa/browser/edit_search_engine_cocoa_controller.h"
6
7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/search_engines/template_url_service_factory.h"
9 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
10 #include "chrome/grit/generated_resources.h"
11 #include "chrome/test/base/testing_profile.h"
12 #include "components/search_engines/template_url.h"
13 #include "grit/theme_resources.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 #import "testing/gtest_mac.h"
16 #include "testing/platform_test.h"
17 #include "ui/base/l10n/l10n_util_mac.h"
18 #include "ui/base/resource/resource_bundle.h"
19 #include "ui/gfx/image/image.h"
20
21 @interface FakeEditSearchEngineController : EditSearchEngineCocoaController
22
23 - (NSTextField*)nameField;
24 - (NSTextField*)keywordField;
25 - (NSTextField*)urlField;
26 - (NSImageView*)nameImage;
27 - (NSImageView*)keywordImage;
28 - (NSImageView*)urlImage;
29 - (NSButton*)doneButton;
30
31 - (NSImage*)goodImage;
32 - (NSImage*)badImage;
33
34 @end
35
36 @implementation FakeEditSearchEngineController
37
38 - (NSTextField*)nameField {
39 return nameField_;
40 }
41
42 - (NSTextField*)keywordField {
43 return keywordField_;
44 }
45
46 - (NSTextField*)urlField {
47 return urlField_;
48 }
49
50 - (NSImageView*)nameImage {
51 return nameImage_;
52 }
53
54 - (NSImageView*)keywordImage {
55 return keywordImage_;
56 }
57
58 - (NSImageView*)urlImage {
59 return urlImage_;
60 }
61
62 - (NSButton*)doneButton {
63 return doneButton_;
64 }
65
66 - (NSImage*)goodImage {
67 ui::ResourceBundle& rb = ResourceBundle::GetSharedInstance();
68 return rb.GetNativeImageNamed(IDR_INPUT_GOOD).ToNSImage();
69 }
70
71 - (NSImage*)badImage {
72 ui::ResourceBundle& rb = ResourceBundle::GetSharedInstance();
73 return rb.GetNativeImageNamed(IDR_INPUT_ALERT).ToNSImage();
74 }
75
76 @end
77
78 namespace {
79
80 class EditSearchEngineControllerTest : public CocoaProfileTest {
81 public:
82 void SetUp() override {
83 CocoaProfileTest::SetUp();
84 ASSERT_TRUE(profile());
85
86 controller_ =
87 [[FakeEditSearchEngineController alloc] initWithProfile:profile()
88 delegate:nil
89 templateURL:nil];
90 }
91
92 void TearDown() override {
93 // Force the window to load so we hit |-awakeFromNib| to register as the
94 // window's delegate so that the controller can clean itself up in
95 // |-windowWillClose:|.
96 ASSERT_TRUE([controller_ window]);
97
98 [controller_ close];
99 CocoaProfileTest::TearDown();
100 }
101
102 FakeEditSearchEngineController* controller_;
103 };
104
105 TEST_F(EditSearchEngineControllerTest, ValidImageOriginals) {
106 EXPECT_TRUE([controller_ window]); // Force the window to load.
107
108 EXPECT_TRUE([[controller_ goodImage] isKindOfClass:[NSImage class]]);
109 EXPECT_TRUE([[controller_ badImage] isKindOfClass:[NSImage class]]);
110
111 // Test window title is set correctly.
112 NSString* title = l10n_util::GetNSString(
113 IDS_SEARCH_ENGINES_EDITOR_NEW_WINDOW_TITLE);
114 EXPECT_NSEQ(title, [[controller_ window] title]);
115 }
116
117 TEST_F(EditSearchEngineControllerTest, SetImageViews) {
118 EXPECT_TRUE([controller_ window]); // Force the window to load.
119 EXPECT_EQ([controller_ badImage], [[controller_ nameImage] image]);
120 // An empty keyword is not OK.
121 EXPECT_EQ([controller_ badImage], [[controller_ keywordImage] image]);
122 EXPECT_EQ([controller_ badImage], [[controller_ urlImage] image]);
123 }
124
125 // This test ensures that on creating a new keyword, we are in an "invalid"
126 // state that cannot save.
127 TEST_F(EditSearchEngineControllerTest, InvalidState) {
128 EXPECT_TRUE([controller_ window]); // Force window to load.
129 NSString* toolTip = nil;
130 EXPECT_FALSE([controller_ validateFields]);
131
132 EXPECT_NSEQ(@"", [[controller_ nameField] stringValue]);
133 EXPECT_EQ([controller_ badImage], [[controller_ nameImage] image]);
134 toolTip = l10n_util::GetNSString(IDS_SEARCH_ENGINES_INVALID_TITLE_TT);
135 EXPECT_NSEQ(toolTip, [[controller_ nameField] toolTip]);
136 EXPECT_NSEQ(toolTip, [[controller_ nameImage] toolTip]);
137
138 // Keywords can not be empty strings.
139 EXPECT_NSEQ(@"", [[controller_ keywordField] stringValue]);
140 EXPECT_EQ([controller_ badImage], [[controller_ keywordImage] image]);
141 EXPECT_TRUE([[controller_ keywordField] toolTip]);
142 EXPECT_TRUE([[controller_ keywordImage] toolTip]);
143
144 EXPECT_NSEQ(@"", [[controller_ urlField] stringValue]);
145 EXPECT_EQ([controller_ badImage], [[controller_ urlImage] image]);
146 toolTip = l10n_util::GetNSString(IDS_SEARCH_ENGINES_INVALID_URL_TT);
147 EXPECT_NSEQ(toolTip, [[controller_ urlField] toolTip]);
148 EXPECT_NSEQ(toolTip, [[controller_ urlImage] toolTip]);
149 }
150
151 // Tests that the single name field validates.
152 TEST_F(EditSearchEngineControllerTest, ValidateName) {
153 EXPECT_TRUE([controller_ window]); // Force window to load.
154
155 EXPECT_EQ([controller_ badImage], [[controller_ nameImage] image]);
156 EXPECT_FALSE([controller_ validateFields]);
157 NSString* toolTip =
158 l10n_util::GetNSString(IDS_SEARCH_ENGINES_INVALID_TITLE_TT);
159 EXPECT_NSEQ(toolTip, [[controller_ nameField] toolTip]);
160 EXPECT_NSEQ(toolTip, [[controller_ nameImage] toolTip]);
161 [[controller_ nameField] setStringValue:@"Test Name"];
162 EXPECT_FALSE([controller_ validateFields]);
163 EXPECT_EQ([controller_ goodImage], [[controller_ nameImage] image]);
164 EXPECT_FALSE([[controller_ nameField] toolTip]);
165 EXPECT_FALSE([[controller_ nameImage] toolTip]);
166 EXPECT_FALSE([[controller_ doneButton] isEnabled]);
167 }
168
169 // The keyword field is not valid if it is empty.
170 TEST_F(EditSearchEngineControllerTest, ValidateKeyword) {
171 EXPECT_TRUE([controller_ window]); // Force window load.
172
173 EXPECT_EQ([controller_ badImage], [[controller_ keywordImage] image]);
174 EXPECT_FALSE([controller_ validateFields]);
175 EXPECT_TRUE([[controller_ keywordField] toolTip]);
176 EXPECT_TRUE([[controller_ keywordImage] toolTip]);
177 [[controller_ keywordField] setStringValue:@"foobar"];
178 EXPECT_FALSE([controller_ validateFields]);
179 EXPECT_EQ([controller_ goodImage], [[controller_ keywordImage] image]);
180 EXPECT_FALSE([[controller_ keywordField] toolTip]);
181 EXPECT_FALSE([[controller_ keywordImage] toolTip]);
182 EXPECT_FALSE([[controller_ doneButton] isEnabled]);
183 }
184
185 // Tests that the URL field validates.
186 TEST_F(EditSearchEngineControllerTest, ValidateURL) {
187 EXPECT_TRUE([controller_ window]); // Force window to load.
188
189 EXPECT_EQ([controller_ badImage], [[controller_ urlImage] image]);
190 EXPECT_FALSE([controller_ validateFields]);
191 NSString* toolTip =
192 l10n_util::GetNSString(IDS_SEARCH_ENGINES_INVALID_URL_TT);
193 EXPECT_NSEQ(toolTip, [[controller_ urlField] toolTip]);
194 EXPECT_NSEQ(toolTip, [[controller_ urlImage] toolTip]);
195 [[controller_ urlField] setStringValue:@"http://foo-bar.com"];
196 EXPECT_FALSE([controller_ validateFields]);
197 EXPECT_EQ([controller_ goodImage], [[controller_ urlImage] image]);
198 EXPECT_FALSE([[controller_ urlField] toolTip]);
199 EXPECT_FALSE([[controller_ urlImage] toolTip]);
200 EXPECT_FALSE([[controller_ doneButton] isEnabled]);
201 }
202
203 // Tests that if the user enters all valid data that the UI reflects that
204 // and that they can save.
205 TEST_F(EditSearchEngineControllerTest, ValidateFields) {
206 EXPECT_TRUE([controller_ window]); // Force window to load.
207
208 // State before entering data.
209 EXPECT_EQ([controller_ badImage], [[controller_ nameImage] image]);
210 EXPECT_EQ([controller_ badImage], [[controller_ keywordImage] image]);
211 EXPECT_EQ([controller_ badImage], [[controller_ urlImage] image]);
212 EXPECT_FALSE([[controller_ doneButton] isEnabled]);
213 EXPECT_FALSE([controller_ validateFields]);
214
215 [[controller_ nameField] setStringValue:@"Test Name"];
216 EXPECT_FALSE([controller_ validateFields]);
217 EXPECT_EQ([controller_ goodImage], [[controller_ nameImage] image]);
218 EXPECT_FALSE([[controller_ doneButton] isEnabled]);
219
220 [[controller_ keywordField] setStringValue:@"foobar"];
221 EXPECT_FALSE([controller_ validateFields]);
222 EXPECT_EQ([controller_ goodImage], [[controller_ keywordImage] image]);
223 EXPECT_FALSE([[controller_ doneButton] isEnabled]);
224
225 // Once the URL is entered, we should have all 3 valid fields.
226 [[controller_ urlField] setStringValue:@"http://foo-bar.com"];
227 EXPECT_TRUE([controller_ validateFields]);
228 EXPECT_EQ([controller_ goodImage], [[controller_ urlImage] image]);
229 EXPECT_TRUE([[controller_ doneButton] isEnabled]);
230 }
231
232 // Tests editing an existing TemplateURL.
233 TEST_F(EditSearchEngineControllerTest, EditTemplateURL) {
234 TemplateURLData data;
235 data.SetShortName(base::ASCIIToUTF16("Foobar"));
236 data.SetKeyword(base::ASCIIToUTF16("keyword"));
237 std::string urlString = TemplateURLRef::DisplayURLToURLRef(
238 base::ASCIIToUTF16("http://foo-bar.com"));
239 data.SetURL(urlString);
240 TemplateURL url(data);
241 FakeEditSearchEngineController *controller =
242 [[FakeEditSearchEngineController alloc] initWithProfile:profile()
243 delegate:nil
244 templateURL:&url];
245 EXPECT_TRUE([controller window]);
246 NSString* title = l10n_util::GetNSString(
247 IDS_SEARCH_ENGINES_EDITOR_EDIT_WINDOW_TITLE);
248 EXPECT_NSEQ(title, [[controller window] title]);
249 NSString* nameString = [[controller nameField] stringValue];
250 EXPECT_NSEQ(@"Foobar", nameString);
251 NSString* keywordString = [[controller keywordField] stringValue];
252 EXPECT_NSEQ(@"keyword", keywordString);
253 NSString* urlValueString = [[controller urlField] stringValue];
254 EXPECT_NSEQ(@"http://foo-bar.com", urlValueString);
255 EXPECT_TRUE([controller validateFields]);
256 [controller close];
257 }
258
259 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/browser/edit_search_engine_cocoa_controller.mm ('k') | chrome/browser/ui/cocoa/browser_window_cocoa.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698