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

Side by Side Diff: chrome/browser/cocoa/bookmark_bubble_controller_unittest.mm

Issue 171016: Bookmark STAR bubble (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 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
Property Changes:
Name: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2009 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 <Cocoa/Cocoa.h>
6
7 #include "base/basictypes.h"
8 #include "base/scoped_nsobject.h"
9 #import "chrome/browser/cocoa/bookmark_bubble_controller.h"
10 #include "chrome/browser/cocoa/browser_test_helper.h"
11 #import "chrome/browser/cocoa/cocoa_test_helper.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "testing/platform_test.h"
14
15 @interface BBDelegate : NSObject<BookmarkBubbleControllerDelegate> {
16 NSWindow* window_; // weak
17 int edits_;
18 int dones_;
19 }
20 @property (readonly) int edits;
21 @property (readonly) int dones;
22 @property (readonly) NSWindow* window;
23 @end
24
25 @implementation BBDelegate
26
27 @synthesize edits = edits_;
28 @synthesize window = window_;
29 @synthesize dones = dones_;
30
31 - (NSPoint)topLeftForBubble {
32 return NSMakePoint(10, 300);
33 }
34
35 - (void)editBookmarkNode:(const BookmarkNode*)node {
36 edits_++;
37 }
38
39 - (void)doneWithBubbleController:(BookmarkBubbleController*)controller {
40 dones_++;
41 }
42
43 - (void)clear {
44 edits_ = 0;
45 dones_ = 0;
46 }
47
48 @end
49
50 namespace {
51
52 class BookmarkBubbleControllerTest : public PlatformTest {
53 public:
54 CocoaTestHelper cocoa_helper_; // Inits Cocoa, creates window, etc...
55 BrowserTestHelper helper_;
56 scoped_nsobject<BBDelegate> delegate_;
57 scoped_nsobject<BookmarkBubbleController> controller_;
58
59 BookmarkBubbleControllerTest() {
60 delegate_.reset([[BBDelegate alloc] init]);
61 }
62
63 // Returns a controller but ownership not transferred.
64 // Only one of these will be valid at a time.
65 BookmarkBubbleController* ControllerForNode(const BookmarkNode* node) {
66 controller_.reset([[BookmarkBubbleController alloc]
67 initWithDelegate:delegate_.get()
68 parentWindow:cocoa_helper_.window()
69 topLeftForBubble:[delegate_ topLeftForBubble]
70 model:helper_.profile()->GetBookmarkModel()
71 node:node
72 alreadyBookmarked:YES]);
73 [controller_ view]; // force nib load
74 return controller_.get();
75 }
76
77 BookmarkModel* GetBookmarkModel() {
78 return helper_.profile()->GetBookmarkModel();
79 }
80 };
81
82 // Confirm basics about the bubble window (e.g. that it is inside the
83 // parent window)
84 TEST_F(BookmarkBubbleControllerTest, TestBubbleWindow) {
85 BookmarkModel* model = GetBookmarkModel();
86 const BookmarkNode* node = model->AddURL(model->GetBookmarkBarNode(),
87 0,
88 L"Bookie markie title",
89 GURL("http://www.google.com"));
90 BookmarkBubbleController* controller = ControllerForNode(node);
91 EXPECT_TRUE(controller);
92 NSWindow* window = [controller createBubbleWindow];
93 EXPECT_TRUE(window);
94 EXPECT_TRUE(NSContainsRect([cocoa_helper_.window() frame],
95 [window frame]));
96 }
97
98 // Confirm population of folder list
99 TEST_F(BookmarkBubbleControllerTest, TestFillInFolder) {
100 // Create some folders, including a nested folder
101 BookmarkModel* model = GetBookmarkModel();
102 const BookmarkNode* node1 = model->AddGroup(model->GetBookmarkBarNode(),
103 0, L"one");
104 const BookmarkNode* node2 = model->AddGroup(model->GetBookmarkBarNode(),
105 1, L"two");
106 const BookmarkNode* node3 = model->AddGroup(model->GetBookmarkBarNode(),
107 2, L"three");
108 const BookmarkNode* node4 = model->AddGroup(node2,
109 0, L"sub");
110 model->AddURL(node1, 0, L"title1", GURL("http://www.google.com"));
111 model->AddURL(node3, 0, L"title2", GURL("http://www.google.com"));
112 model->AddURL(node4, 0, L"title3", GURL("http://www.google.com/reader"));
113
114 BookmarkBubbleController* controller = ControllerForNode(node4);
115 EXPECT_TRUE(controller);
116
117 NSArray* items = [[controller folderComboBox] objectValues];
118 EXPECT_TRUE([items containsObject:@"one"]);
119 EXPECT_TRUE([items containsObject:@"two"]);
120 EXPECT_TRUE([items containsObject:@"three"]);
121 EXPECT_TRUE([items containsObject:@"sub"]);
122 EXPECT_FALSE([items containsObject:@"title1"]);
123 EXPECT_FALSE([items containsObject:@"title2"]);
124 }
125
126 // Click on edit; bubble gets closed.
127 TEST_F(BookmarkBubbleControllerTest, TestSimpleActions) {
128 BookmarkModel* model = GetBookmarkModel();
129 const BookmarkNode* node = model->AddURL(model->GetBookmarkBarNode(),
130 0,
131 L"Bookie markie title",
132 GURL("http://www.google.com"));
133 BookmarkBubbleController* controller = ControllerForNode(node);
134 EXPECT_TRUE(controller);
135
136 EXPECT_EQ([delegate_ edits], 0);
137 EXPECT_EQ([delegate_ dones], 0);
138 EXPECT_FALSE([controller windowHasBeenClosed]);
139 [controller edit:controller];
140 EXPECT_EQ([delegate_ edits], 1);
141 EXPECT_EQ([delegate_ dones], 1);
142 EXPECT_TRUE([controller windowHasBeenClosed]);
143
144 [delegate_ clear];
145 EXPECT_EQ([delegate_ edits], 0);
146 EXPECT_EQ([delegate_ dones], 0);
147
148 controller = ControllerForNode(node);
149 EXPECT_TRUE(controller);
150 EXPECT_FALSE([controller windowHasBeenClosed]);
151 [controller close:controller];
152 EXPECT_EQ([delegate_ edits], 0);
153 EXPECT_EQ([delegate_ dones], 1);
154 EXPECT_TRUE([controller windowHasBeenClosed]);
155 }
156
157 // User changes title and parent folder in the UI
158 TEST_F(BookmarkBubbleControllerTest, TestUserEdit) {
159 BookmarkModel* model = GetBookmarkModel();
160 const BookmarkNode* node = model->AddURL(model->GetBookmarkBarNode(),
161 0,
162 L"short-title",
163 GURL("http://www.google.com"));
164 model->AddGroup(model->GetBookmarkBarNode(), 0, L"grandma");
165 model->AddGroup(model->GetBookmarkBarNode(), 0, L"grandpa");
166 BookmarkBubbleController* controller = ControllerForNode(node);
167 EXPECT_TRUE(controller);
168
169 // simulate a user edit
170 [controller setTitle:@"oops" parentFolder:@"grandma"];
171 [controller edit:controller];
172
173 // Make sure bookmark has changed
174 EXPECT_EQ(node->GetTitle(), L"oops");
175 EXPECT_EQ(node->GetParent()->GetTitle(), L"grandma");
176 }
177
178 // Click the "remove" button
179 TEST_F(BookmarkBubbleControllerTest, TestRemove) {
180 BookmarkModel* model = GetBookmarkModel();
181 GURL gurl("http://www.google.com");
182 const BookmarkNode* node = model->AddURL(model->GetBookmarkBarNode(),
183 0,
184 L"Bookie markie title",
185 gurl);
186 BookmarkBubbleController* controller = ControllerForNode(node);
187 EXPECT_TRUE(controller);
188 EXPECT_TRUE(model->IsBookmarked(gurl));
189
190 [controller remove:controller];
191 EXPECT_FALSE(model->IsBookmarked(gurl));
192 EXPECT_TRUE([controller windowHasBeenClosed]);
193 EXPECT_EQ([delegate_ dones], 1);
194 }
195
196 // Confirm picking "choose another folder" caused edit: to be called.
197 TEST_F(BookmarkBubbleControllerTest, ComboSelectionChanged) {
198 BookmarkModel* model = GetBookmarkModel();
199 GURL gurl("http://www.google.com");
200 const BookmarkNode* node = model->AddURL(model->GetBookmarkBarNode(),
201 0, L"super-title",
202 gurl);
203 BookmarkBubbleController* controller = ControllerForNode(node);
204 EXPECT_TRUE(controller);
205
206 NSString* chooseAnotherFolder = [controller chooseAnotherFolderString];
207 EXPECT_EQ([delegate_ edits], 0);
208 [controller setTitle:@"DOH!" parentFolder:chooseAnotherFolder];
209 EXPECT_EQ([delegate_ edits], 1);
210 }
211
212
213 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/bookmark_bubble_controller.mm ('k') | chrome/browser/cocoa/bookmark_bubble_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698