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

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

Issue 501073: Native Cocoa bookmark manager, part 1 (Closed)
Patch Set: Style fixes, and copy/paste unit tests Created 10 years, 11 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) 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 #include "base/scoped_nsobject.h"
6 #import "chrome/browser/cocoa/bookmark_groups_controller.h"
7 #import "chrome/browser/cocoa/bookmark_manager_controller.h"
8 #import "chrome/browser/cocoa/bookmark_tree_controller.h"
9 #include "chrome/browser/cocoa/browser_test_helper.h"
10 #import "chrome/browser/cocoa/cocoa_test_helper.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "testing/platform_test.h"
13
14 // Mac WebKit uses this type, declared in WebKit/mac/History/WebURLsWithTitles.h
15 static NSString* const WebURLsWithTitlesPboardType =
16 @"WebURLsWithTitlesPboardType";
viettrungluu 2010/01/04 21:19:01 Indent (second line) 4 spaces.
17
18 namespace {
19
20 class BookmarkTreeControllerTest : public CocoaTest {
21 public:
22 void SetUp() {
23 CocoaTest::SetUp();
24 pasteboard_ = [NSPasteboard pasteboardWithUniqueName];
25 manager_ = [BookmarkManagerController showBookmarkManager:
26 browser_test_helper_.profile()];
27 ASSERT_TRUE(manager_);
28 treeController_ = [manager_ treeController];
29 ASSERT_TRUE(treeController_);
30 }
31
32 void TearDown() {
33 [manager_ close];
34 [pasteboard_ releaseGlobally];
35 CocoaTest::TearDown();
36 }
37
38 id SelectBar() {
39 BookmarkModel* model = [manager_ bookmarkModel];
40 id barItem = [manager_ itemFromNode:model->GetBookmarkBarNode()];
41 [[manager_ groupsController] setSelectedGroup:barItem];
42 return barItem;
43 }
44
45 id AddToBar(const std::wstring& title, const std::string& urlStr) {
46 BookmarkModel* model = [manager_ bookmarkModel];
47 const BookmarkNode* bar = model->GetBookmarkBarNode();
48 const BookmarkNode* node;
49 node = model->AddURL(bar, bar->GetChildCount(), title, GURL(urlStr));
50 return [manager_ itemFromNode:node];
51 }
52
53 BrowserTestHelper browser_test_helper_;
54 BookmarkManagerController* manager_;
55 BookmarkTreeController* treeController_;
56 NSPasteboard* pasteboard_;
57 };
58
59 TEST_F(BookmarkTreeControllerTest, Model) {
60 // Select nothing in the group list and check tree is empty:
61 BookmarkGroupsController* groupsController = [manager_ groupsController];
62 [groupsController setSelectedGroup:nil];
63 ASSERT_EQ(nil, [treeController_ group]);
64
65 // Select the bookmarks bar and check that it's shown in the tree:
66 id barItem = SelectBar();
67 ASSERT_EQ(barItem, [treeController_ group]);
68 }
69
70 TEST_F(BookmarkTreeControllerTest, Selection) {
71 SelectBar();
72 id test1 = AddToBar(L"Test 1", "http://example.com/test1");
73 id test2 = AddToBar(L"Test 2", "http://example.com/test2");
74 id test3 = AddToBar(L"Test 3", "http://example.com/test3");
75 EXPECT_EQ(0U, [[treeController_ selectedItems] count]);
76
77 NSArray* sel = [NSArray arrayWithObject:test2];
78 [treeController_ setSelectedItems:sel];
79 EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]);
80 sel = [NSArray arrayWithObjects:test1, test3, nil];
81 [treeController_ setSelectedItems:sel];
82 EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]);
83 sel = [NSArray arrayWithObjects:test1, test2, test3, nil];
84 [treeController_ setSelectedItems:sel];
85 EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]);
86 sel = [NSArray array];
87 [treeController_ setSelectedItems:sel];
88 EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]);
89 }
90
91 TEST_F(BookmarkTreeControllerTest, CopyURLs) {
92 SelectBar();
93 AddToBar(L"Test 1", "http://example.com/test1");
94 AddToBar(L"Test 2", "http://example.com/test2");
95 AddToBar(L"Test 3", "http://example.com/test3");
96 [[treeController_ outline] selectAll:treeController_];
97
98 ASSERT_TRUE([treeController_ copyToPasteboard:pasteboard_]);
99
100 NSArray* contents = [pasteboard_ propertyListForType:
101 WebURLsWithTitlesPboardType];
102 ASSERT_TRUE([contents isKindOfClass:[NSArray class]]);
103 NSArray* urlStrings = [contents objectAtIndex:0];
104 EXPECT_TRUE([urlStrings isKindOfClass:[NSArray class]]);
105 NSArray* expectedURLStrings = [NSArray arrayWithObjects:
106 @"http://example.com/test1",
107 @"http://example.com/test2",
108 @"http://example.com/test3", nil];
109 EXPECT_TRUE([urlStrings isEqual:expectedURLStrings]);
110 NSArray* titles = [contents objectAtIndex:1];
111 EXPECT_TRUE([titles isKindOfClass:[NSArray class]]);
112 NSArray* expectedTitles = [NSArray arrayWithObjects:
113 @"Test 1",
114 @"Test 2",
115 @"Test 3", nil];
116 EXPECT_TRUE([titles isEqual:expectedTitles]);
117
118 NSString* str = [pasteboard_ stringForType:NSStringPboardType];
119 EXPECT_TRUE([str isEqual:
120 @"http://example.com/test1\n"
121 "http://example.com/test2\n"
122 "http://example.com/test3"]);
123
124 EXPECT_FALSE([pasteboard_ dataForType:NSURLPboardType]);
125 }
126
127 TEST_F(BookmarkTreeControllerTest, PasteSingleURL) {
128 [pasteboard_ declareTypes:[NSArray arrayWithObjects:
129 NSURLPboardType, @"public.url-name", nil]
130 owner:nil];
131 [[NSURL URLWithString:@"http://google.com"] writeToPasteboard:pasteboard_];
132 [pasteboard_ setString:@"Gooooogle" forType:@"public.url-name"];
133
134 SelectBar();
135 AddToBar(L"Test 1", "http://example.com/test1");
136 AddToBar(L"Test 2", "http://example.com/test2");
137 AddToBar(L"Test 3", "http://example.com/test3");
138
139 ASSERT_TRUE([treeController_ pasteFromPasteboard:pasteboard_]);
140 EXPECT_EQ(4, [[treeController_ outline] numberOfRows]);
141 EXPECT_EQ(3, [[treeController_ outline] selectedRow]);
142 NSArray* sel = [treeController_ selectedItems];
143 ASSERT_EQ(1U, [sel count]);
144 const BookmarkNode* node = [manager_ nodeFromItem:[sel objectAtIndex:0]];
145 ASSERT_TRUE(node);
146 EXPECT_EQ(GURL("http://google.com"), node->GetURL());
147 EXPECT_EQ(L"Gooooogle", node->GetTitle());
148 }
149
150 TEST_F(BookmarkTreeControllerTest, PasteMultipleURLs) {
151 [pasteboard_ declareTypes:[NSArray arrayWithObjects:
152 WebURLsWithTitlesPboardType,
153 NSURLPboardType, nil]
154 owner:nil];
155 NSMutableArray* urls = [NSArray arrayWithObjects:
156 @"http://google.com", @"http://chromium.org", nil];
157 NSMutableArray* titles = [NSArray arrayWithObjects:
158 @"Gooooogle", @"Chrooooomium", nil];
159 [pasteboard_ setPropertyList:[NSArray arrayWithObjects:urls, titles, nil]
160 forType:WebURLsWithTitlesPboardType];
161 [[NSURL URLWithString:@"http://example.com"] writeToPasteboard:pasteboard_];
162
163 SelectBar();
164 AddToBar(L"Test 1", "http://example.com/test1");
165 id test2 = AddToBar(L"Test 2", "http://example.com/test2");
166 AddToBar(L"Test 3", "http://example.com/test3");
167 [treeController_ setSelectedItems:[NSArray arrayWithObject:test2]];
168
169 ASSERT_TRUE([treeController_ pasteFromPasteboard:pasteboard_]);
170 EXPECT_EQ(5, [[treeController_ outline] numberOfRows]);
171 EXPECT_TRUE([[[treeController_ outline] selectedRowIndexes]
172 isEqual:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(2, 2)]]);
173 NSArray* sel = [treeController_ selectedItems];
174 ASSERT_EQ(2U, [sel count]);
175
176 const BookmarkNode* node = [manager_ nodeFromItem:[sel objectAtIndex:0]];
177 ASSERT_TRUE(node);
178 EXPECT_EQ(GURL("http://google.com"), node->GetURL());
179 EXPECT_EQ(L"Gooooogle", node->GetTitle());
180 node = [manager_ nodeFromItem:[sel objectAtIndex:1]];
181 ASSERT_TRUE(node);
182 EXPECT_EQ(GURL("http://chromium.org"), node->GetURL());
183 EXPECT_EQ(L"Chrooooomium", node->GetTitle());
184 }
185
186 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698