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

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

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

Powered by Google App Engine
This is Rietveld 408576698