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

Side by Side Diff: components/enhanced_bookmarks/enhanced_bookmark_model_unittest.cc

Issue 563363002: Only set remote id during url node creation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « components/enhanced_bookmarks/enhanced_bookmark_model_observer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h" 5 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/run_loop.h"
10 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
11 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
12 #include "components/bookmarks/browser/bookmark_model.h" 14 #include "components/bookmarks/browser/bookmark_model.h"
13 #include "components/bookmarks/browser/bookmark_node.h" 15 #include "components/bookmarks/browser/bookmark_node.h"
14 #include "components/bookmarks/test/test_bookmark_client.h" 16 #include "components/bookmarks/test/test_bookmark_client.h"
17 #include "components/enhanced_bookmarks/enhanced_bookmark_model_observer.h"
15 #include "components/enhanced_bookmarks/proto/metadata.pb.h" 18 #include "components/enhanced_bookmarks/proto/metadata.pb.h"
16 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
17 #include "url/gurl.h" 20 #include "url/gurl.h"
18 21
22 using enhanced_bookmarks::EnhancedBookmarkModel;
23
19 namespace { 24 namespace {
25 const std::string BOOKMARK_URL("http://example.com/index.html");
26 } // namespace
20 27
21 const std::string BOOKMARK_URL("http://example.com/index.html"); 28 class EnhancedBookmarkModelTest
22 29 : public testing::Test,
23 class EnhancedBookmarkModelTest : public testing::Test { 30 public enhanced_bookmarks::EnhancedBookmarkModelObserver {
24 public: 31 public:
25 EnhancedBookmarkModelTest() {} 32 EnhancedBookmarkModelTest()
33 : loaded_calls_(0),
34 shutting_down_calls_(0),
35 added_calls_(0),
36 removed_calls_(0),
37 all_user_nodes_removed_calls_(0),
38 remote_id_changed_calls_(0),
39 last_added_(NULL),
40 last_removed_(NULL),
41 last_remote_id_node_(NULL) {}
26 virtual ~EnhancedBookmarkModelTest() {} 42 virtual ~EnhancedBookmarkModelTest() {}
27 43
28 virtual void SetUp() OVERRIDE { 44 virtual void SetUp() OVERRIDE {
29 bookmarks::TestBookmarkClient bookmark_client; 45 message_loop_.reset(new base::MessageLoop(base::MessageLoop::TYPE_DEFAULT));
30 bookmark_model_.reset(bookmark_client.CreateModel().release()); 46 bookmark_client_.reset(new bookmarks::TestBookmarkClient());
31 model_.reset(new enhanced_bookmarks::EnhancedBookmarkModel( 47 bookmark_model_.reset(bookmark_client_->CreateModel().release());
32 bookmark_model_.get(), "v1.0")); 48 model_.reset(new EnhancedBookmarkModel(bookmark_model_.get(), "v1.0"));
49 model_->AddObserver(this);
33 } 50 }
34 51
35 virtual void TearDown() OVERRIDE { 52 virtual void TearDown() OVERRIDE {
53 if (model_)
54 model_->ShutDown();
36 model_.reset(); 55 model_.reset();
37 bookmark_model_.reset(); 56 bookmark_model_.reset();
57 bookmark_client_.reset();
58 message_loop_.reset();
38 } 59 }
39 60
40 protected: 61 protected:
41 const BookmarkNode* AddBookmark() { 62 const BookmarkNode* AddBookmark() {
42 return AddBookmark("Some title", bookmark_model_->other_node()); 63 return AddBookmark("Some title", bookmark_model_->other_node());
43 } 64 }
44 65
45 const BookmarkNode* AddFolder() { 66 const BookmarkNode* AddFolder() {
46 return AddFolder("Some title", bookmark_model_->other_node()); 67 return AddFolder("Some title", bookmark_model_->other_node());
47 } 68 }
48 69
49 const BookmarkNode* AddBookmark(const std::string& name, 70 const BookmarkNode* AddBookmark(const std::string& name,
50 const BookmarkNode* parent) { 71 const BookmarkNode* parent) {
51 return bookmark_model_->AddURL(parent, 72 return model_->AddURL(parent,
52 0, // index. 73 0, // index.
53 base::ASCIIToUTF16(name), 74 base::ASCIIToUTF16(name),
54 GURL(BOOKMARK_URL)); 75 GURL(BOOKMARK_URL),
76 base::Time::Now());
55 } 77 }
56 78
57 const BookmarkNode* AddFolder(const std::string& name, 79 const BookmarkNode* AddFolder(const std::string& name,
58 const BookmarkNode* parent) { 80 const BookmarkNode* parent) {
59 return bookmark_model_->AddFolder(parent, 0, base::ASCIIToUTF16(name)); 81 return model_->AddFolder(parent, 0, base::ASCIIToUTF16(name));
60 } 82 }
61 83
62 std::string GetVersionForNode(const BookmarkNode* node) { 84 std::string GetVersion(const BookmarkNode* node) {
63 std::string version; 85 return GetMetaInfoField(node, "stars.version");
64 if (!node->GetMetaInfo("stars.version", &version))
65 return std::string();
66 return version;
67 } 86 }
68 87
88 std::string GetId(const BookmarkNode* node) {
89 return GetMetaInfoField(node, "stars.id");
90 }
91
92 std::string GetOldId(const BookmarkNode* node) {
93 return GetMetaInfoField(node, "stars.oldId");
94 }
95
96 std::string GetMetaInfoField(const BookmarkNode* node,
97 const std::string& name) {
98 std::string value;
99 if (!node->GetMetaInfo(name, &value))
100 return std::string();
101 return value;
102 }
103
104 scoped_ptr<base::MessageLoop> message_loop_;
105 scoped_ptr<bookmarks::TestBookmarkClient> bookmark_client_;
69 scoped_ptr<BookmarkModel> bookmark_model_; 106 scoped_ptr<BookmarkModel> bookmark_model_;
70 scoped_ptr<enhanced_bookmarks::EnhancedBookmarkModel> model_; 107 scoped_ptr<EnhancedBookmarkModel> model_;
108
109 // EnhancedBookmarkModelObserver implementation:
110 virtual void EnhancedBookmarkModelLoaded() OVERRIDE { loaded_calls_++; }
111 virtual void EnhancedBookmarkModelShuttingDown() OVERRIDE {
112 shutting_down_calls_++;
113 }
114 virtual void EnhancedBookmarkAdded(const BookmarkNode* node) OVERRIDE {
115 added_calls_++;
116 last_added_ = node;
117 }
118 virtual void EnhancedBookmarkRemoved(const BookmarkNode* node) OVERRIDE {
119 removed_calls_++;
120 last_removed_ = node;
121 }
122 virtual void EnhancedBookmarkAllUserNodesRemoved() OVERRIDE {
123 all_user_nodes_removed_calls_++;
124 }
125 virtual void EnhancedBookmarkRemoteIdChanged(
126 const BookmarkNode* node,
127 const std::string& old_remote_id,
128 const std::string& remote_id) OVERRIDE {
129 remote_id_changed_calls_++;
130 last_remote_id_node_ = node;
131 last_old_remote_id_ = old_remote_id;
132 last_remote_id_ = remote_id;
133 }
134
135 // Observer call counters:
136 int loaded_calls_;
137 int shutting_down_calls_;
138 int added_calls_;
139 int removed_calls_;
140 int all_user_nodes_removed_calls_;
141 int remote_id_changed_calls_;
142
143 // Observer parameter cache:
144 const BookmarkNode* last_added_;
145 const BookmarkNode* last_removed_;
146 const BookmarkNode* last_remote_id_node_;
147 std::string last_old_remote_id_;
148 std::string last_remote_id_;
71 149
72 private: 150 private:
73 DISALLOW_COPY_AND_ASSIGN(EnhancedBookmarkModelTest); 151 DISALLOW_COPY_AND_ASSIGN(EnhancedBookmarkModelTest);
74 }; 152 };
75 153
76 TEST_F(EnhancedBookmarkModelTest, TestEmptySnippet) { 154 TEST_F(EnhancedBookmarkModelTest, TestEmptySnippet) {
77 const BookmarkNode* node = AddBookmark(); 155 const BookmarkNode* node = AddBookmark();
78 156
79 std::string snippet(model_->GetSnippet(node)); 157 std::string snippet(model_->GetSnippet(node));
80 EXPECT_EQ(snippet, ""); 158 EXPECT_EQ(snippet, "");
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 ASSERT_TRUE(result); 324 ASSERT_TRUE(result);
247 325
248 GURL url; 326 GURL url;
249 int width; 327 int width;
250 int height; 328 int height;
251 result = model_->GetOriginalImage(node, &url, &width, &height); 329 result = model_->GetOriginalImage(node, &url, &width, &height);
252 ASSERT_TRUE(result); 330 ASSERT_TRUE(result);
253 EXPECT_EQ(url, GURL("http://example.com/i.jpg")); 331 EXPECT_EQ(url, GURL("http://example.com/i.jpg"));
254 EXPECT_EQ(width, 22); 332 EXPECT_EQ(width, 22);
255 EXPECT_EQ(height, 33); 333 EXPECT_EQ(height, 33);
256 EXPECT_EQ("v1.0", GetVersionForNode(node)); 334 EXPECT_EQ("v1.0", GetVersion(node));
257 } 335 }
258 336
259 TEST_F(EnhancedBookmarkModelTest, TestDoubleEncodeDecode) { 337 TEST_F(EnhancedBookmarkModelTest, TestDoubleEncodeDecode) {
260 const BookmarkNode* node = AddBookmark(); 338 const BookmarkNode* node = AddBookmark();
261 339
262 // Encode some information. 340 // Encode some information.
263 bool result = 341 bool result =
264 model_->SetOriginalImage(node, GURL("http://example.com/i.jpg"), 22, 33); 342 model_->SetOriginalImage(node, GURL("http://example.com/i.jpg"), 22, 33);
265 ASSERT_TRUE(result); 343 ASSERT_TRUE(result);
266 // Encode some different information. 344 // Encode some different information.
267 result = 345 result =
268 model_->SetOriginalImage(node, GURL("http://example.com/i.jpg"), 33, 44); 346 model_->SetOriginalImage(node, GURL("http://example.com/i.jpg"), 33, 44);
269 ASSERT_TRUE(result); 347 ASSERT_TRUE(result);
270 348
271 GURL url; 349 GURL url;
272 int width; 350 int width;
273 int height; 351 int height;
274 result = model_->GetOriginalImage(node, &url, &width, &height); 352 result = model_->GetOriginalImage(node, &url, &width, &height);
275 ASSERT_TRUE(result); 353 ASSERT_TRUE(result);
276 EXPECT_EQ(url, GURL("http://example.com/i.jpg")); 354 EXPECT_EQ(url, GURL("http://example.com/i.jpg"));
277 EXPECT_EQ(width, 33); 355 EXPECT_EQ(width, 33);
278 EXPECT_EQ(height, 44); 356 EXPECT_EQ(height, 44);
279 EXPECT_EQ("v1.0", GetVersionForNode(node)); 357 EXPECT_EQ("v1.0", GetVersion(node));
280 } 358 }
281 359
282 TEST_F(EnhancedBookmarkModelTest, TestRemoteId) { 360 TEST_F(EnhancedBookmarkModelTest, TestRemoteId) {
283 const BookmarkNode* node = AddBookmark(); 361 const BookmarkNode* node = AddBookmark();
362 // Verify that the remote id starts with the correct prefix.
363 EXPECT_TRUE(StartsWithASCII(model_->GetRemoteId(node), "ebc_", true));
364
365 // Getting the remote id for nodes that don't have them should return the
366 // empty string.
367 const BookmarkNode* existing_node =
368 bookmark_model_->AddURL(bookmark_model_->other_node(),
369 0,
370 base::ASCIIToUTF16("Title"),
371 GURL(GURL(BOOKMARK_URL)));
372 EXPECT_TRUE(model_->GetRemoteId(existing_node).empty());
373
374 // Folder nodes should not have a remote id set on creation.
284 const BookmarkNode* folder_node = AddFolder(); 375 const BookmarkNode* folder_node = AddFolder();
285 376 EXPECT_TRUE(model_->GetRemoteId(folder_node).empty());
286 std::string remote_id = model_->GetRemoteId(node);
287 // First call creates the UUID, second call should return the same.
288 EXPECT_EQ(remote_id, model_->GetRemoteId(node));
289
290 // Verify that the remote id starts with the correct prefix.
291 EXPECT_TRUE(StartsWithASCII(remote_id, "ebc_", true));
292 std::string folder_remote_id = model_->GetRemoteId(folder_node);
293 EXPECT_TRUE(StartsWithASCII(folder_remote_id, "ebf_", true));
294
295 // Verifiy version field was set.
296 EXPECT_EQ("v1.0", GetVersionForNode(node));
297 EXPECT_EQ("v1.0", GetVersionForNode(folder_node));
298 } 377 }
299 378
300 TEST_F(EnhancedBookmarkModelTest, TestEmptyDescription) { 379 TEST_F(EnhancedBookmarkModelTest, TestEmptyDescription) {
301 const BookmarkNode* node = AddBookmark(); 380 const BookmarkNode* node = AddBookmark();
302 381
303 std::string description(model_->GetDescription(node)); 382 std::string description(model_->GetDescription(node));
304 EXPECT_EQ(description, ""); 383 EXPECT_EQ(description, "");
305 } 384 }
306 385
307 TEST_F(EnhancedBookmarkModelTest, TestDescription) { 386 TEST_F(EnhancedBookmarkModelTest, TestDescription) {
308 const BookmarkNode* node = AddBookmark(); 387 const BookmarkNode* node = AddBookmark();
309 const std::string description("This is the most useful description of all."); 388 const std::string description("This is the most useful description of all.");
310 389
311 // Set the description. 390 // Set the description.
312 model_->SetDescription(node, description); 391 model_->SetDescription(node, description);
313 392
314 // Check the description is the one that was set. 393 // Check the description is the one that was set.
315 EXPECT_EQ(model_->GetDescription(node), description); 394 EXPECT_EQ(model_->GetDescription(node), description);
316 EXPECT_EQ("v1.0", GetVersionForNode(node)); 395 EXPECT_EQ("v1.0", GetVersion(node));
317 } 396 }
318 397
319 // If there is no notes field, the description should fall back on the snippet. 398 // If there is no notes field, the description should fall back on the snippet.
320 TEST_F(EnhancedBookmarkModelTest, TestDescriptionFallback) { 399 TEST_F(EnhancedBookmarkModelTest, TestDescriptionFallback) {
321 const BookmarkNode* node = AddBookmark(); 400 const BookmarkNode* node = AddBookmark();
322 401
323 // Binary serialize the protobuf. 402 // Binary serialize the protobuf.
324 image::collections::PageData data; 403 image::collections::PageData data;
325 data.set_snippet("Joe Bar Team"); 404 data.set_snippet("Joe Bar Team");
326 ASSERT_TRUE(data.IsInitialized()); 405 ASSERT_TRUE(data.IsInitialized());
(...skipping 15 matching lines...) Expand all
342 model_->SetDescription(node, description); 421 model_->SetDescription(node, description);
343 422
344 // Check the description is the one that was set. 423 // Check the description is the one that was set.
345 EXPECT_EQ(model_->GetDescription(node), description); 424 EXPECT_EQ(model_->GetDescription(node), description);
346 } 425 }
347 426
348 // Makes sure that the stars.version field is set every time 427 // Makes sure that the stars.version field is set every time
349 // EnhancedBookmarkModel makes a change to a node. 428 // EnhancedBookmarkModel makes a change to a node.
350 TEST_F(EnhancedBookmarkModelTest, TestVersionField) { 429 TEST_F(EnhancedBookmarkModelTest, TestVersionField) {
351 const BookmarkNode* node = AddBookmark(); 430 const BookmarkNode* node = AddBookmark();
352 EXPECT_EQ("", GetVersionForNode(node)); 431 EXPECT_EQ("", GetVersion(node));
353 432
354 model_->SetDescription(node, "foo"); 433 model_->SetDescription(node, "foo");
355 EXPECT_EQ("v1.0", GetVersionForNode(node)); 434 EXPECT_EQ("v1.0", GetVersion(node));
356 435
357 // Add a suffix to the version to set. 436 // Add a suffix to the version to set.
358 model_->SetVersionSuffix("alpha"); 437 model_->SetVersionSuffix("alpha");
359 438
360 model_->SetDescription(node, "foo"); 439 model_->SetDescription(node, "foo");
361 // Since the description didn't actually change, the version field should 440 // Since the description didn't actually change, the version field should
362 // not either. 441 // not either.
363 EXPECT_EQ("v1.0", GetVersionForNode(node)); 442 EXPECT_EQ("v1.0", GetVersion(node));
364 443
365 model_->SetDescription(node, "bar"); 444 model_->SetDescription(node, "bar");
366 EXPECT_EQ("v1.0/alpha", GetVersionForNode(node)); 445 EXPECT_EQ("v1.0/alpha", GetVersion(node));
367 } 446 }
368 447
369 // Verifies that the stars.userEdit field is set appropriately when editing a 448 // Verifies that duplicate nodes are reset when the model is created.
370 // node. 449 TEST_F(EnhancedBookmarkModelTest, ResetDuplicateNodesOnInitialization) {
371 TEST_F(EnhancedBookmarkModelTest, TestUserEdit) { 450 model_->ShutDown();
451
452 const BookmarkNode* parent = bookmark_model_->other_node();
453 const BookmarkNode* node1 = bookmark_model_->AddURL(
454 parent, 0, base::ASCIIToUTF16("Some title"), GURL(BOOKMARK_URL));
455 const BookmarkNode* node2 = bookmark_model_->AddURL(
456 parent, 0, base::ASCIIToUTF16("Some title"), GURL(BOOKMARK_URL));
457 const BookmarkNode* node3 = bookmark_model_->AddURL(
458 parent, 0, base::ASCIIToUTF16("Some title"), GURL(BOOKMARK_URL));
459 const BookmarkNode* node4 = bookmark_model_->AddURL(
460 parent, 0, base::ASCIIToUTF16("Some title"), GURL(BOOKMARK_URL));
461
462 bookmark_model_->SetNodeMetaInfo(node1, "stars.id", "c_1");
463 bookmark_model_->SetNodeMetaInfo(node2, "stars.id", "c_2");
464 bookmark_model_->SetNodeMetaInfo(node3, "stars.id", "c_1");
465 bookmark_model_->SetNodeMetaInfo(node4, "stars.id", "c_1");
466 EXPECT_EQ("c_1", GetId(node1));
467 EXPECT_EQ("c_2", GetId(node2));
468 EXPECT_EQ("c_1", GetId(node3));
469 EXPECT_EQ("c_1", GetId(node4));
470
471 model_.reset(new EnhancedBookmarkModel(bookmark_model_.get(), "v2.0"));
472 base::RunLoop().RunUntilIdle();
473 EXPECT_EQ("c_2", GetId(node2));
474 EXPECT_EQ("", GetId(node1));
475 EXPECT_EQ("", GetId(node3));
476 EXPECT_EQ("", GetId(node4));
477 EXPECT_EQ("c_1", GetOldId(node1));
478 EXPECT_EQ("c_1", GetOldId(node3));
479 EXPECT_EQ("c_1", GetOldId(node4));
480 EXPECT_EQ("v2.0", GetVersion(node1));
481 EXPECT_EQ("v2.0", GetVersion(node3));
482 EXPECT_EQ("v2.0", GetVersion(node4));
483 }
484
485 // Verifies that duplicate nodes are reset if one is created.
486 TEST_F(EnhancedBookmarkModelTest, ResetDuplicateAddedNodes) {
487 BookmarkNode::MetaInfoMap meta_info;
488 meta_info["stars.id"] = "c_1";
489 const BookmarkNode* parent = bookmark_model_->other_node();
490
491 const BookmarkNode* node1 =
492 bookmark_model_->AddURLWithCreationTimeAndMetaInfo(
493 parent,
494 0,
495 base::ASCIIToUTF16("Some title"),
496 GURL(BOOKMARK_URL),
497 base::Time::Now(),
498 &meta_info);
499 EXPECT_EQ("c_1", GetId(node1));
500
501 const BookmarkNode* node2 =
502 bookmark_model_->AddURLWithCreationTimeAndMetaInfo(
503 parent,
504 0,
505 base::ASCIIToUTF16("Some title"),
506 GURL(BOOKMARK_URL),
507 base::Time::Now(),
508 &meta_info);
509
510 base::RunLoop().RunUntilIdle();
511 EXPECT_EQ("", GetId(node1));
512 EXPECT_EQ("", GetId(node2));
513 EXPECT_EQ("c_1", GetOldId(node1));
514 EXPECT_EQ("c_1", GetOldId(node2));
515 EXPECT_EQ("v1.0", GetVersion(node1));
516 EXPECT_EQ("v1.0", GetVersion(node2));
517 }
518
519 // Verifies that duplicate nodes are reset if an id is changed to a duplicate
520 // value.
521 TEST_F(EnhancedBookmarkModelTest, ResetDuplicateChangedNodes) {
522 const BookmarkNode* node1 = AddBookmark();
523 const BookmarkNode* node2 = AddBookmark();
524
525 bookmark_model_->SetNodeMetaInfo(node1, "stars.id", "c_1");
526 EXPECT_EQ("c_1", GetId(node1));
527
528 bookmark_model_->SetNodeMetaInfo(node2, "stars.id", "c_1");
529 base::RunLoop().RunUntilIdle();
530 EXPECT_EQ("", GetId(node1));
531 EXPECT_EQ("", GetId(node2));
532 EXPECT_EQ("c_1", GetOldId(node1));
533 EXPECT_EQ("c_1", GetOldId(node2));
534 EXPECT_EQ("v1.0", GetVersion(node1));
535 EXPECT_EQ("v1.0", GetVersion(node2));
536 }
537
538 TEST_F(EnhancedBookmarkModelTest, SetMultipleMetaInfo) {
372 const BookmarkNode* node = AddBookmark(); 539 const BookmarkNode* node = AddBookmark();
373 540 BookmarkNode::MetaInfoMap meta_info;
374 model_->SetDescription(node, "foo"); 541 meta_info["a"] = "aa";
375 std::string user_edit; 542 meta_info["b"] = "bb";
376 ASSERT_TRUE(node->GetMetaInfo("stars.userEdit", &user_edit)); 543
377 EXPECT_EQ("true", user_edit); 544 model_->SetVersionSuffix("1");
378 } 545 model_->SetMultipleMetaInfo(node, meta_info);
379 546 EXPECT_EQ("aa", GetMetaInfoField(node, "a"));
380 } // namespace 547 EXPECT_EQ("bb", GetMetaInfoField(node, "b"));
548 EXPECT_EQ("v1.0/1", GetVersion(node));
549
550 // Not present fields does not erase the fields already set on the node.
551 meta_info["a"] = "aaa";
552 model_->SetVersionSuffix("2");
553 model_->SetMultipleMetaInfo(node, meta_info);
554 EXPECT_EQ("aaa", GetMetaInfoField(node, "a"));
555 EXPECT_EQ("bb", GetMetaInfoField(node, "b"));
556 EXPECT_EQ("v1.0/2", GetVersion(node));
557
558 // Not actually changing any values should not set the version field.
559 model_->SetVersionSuffix("3");
560 model_->SetMultipleMetaInfo(node, meta_info);
561 EXPECT_EQ("v1.0/2", GetVersion(node));
562 }
563
564 TEST_F(EnhancedBookmarkModelTest, ObserverShuttingDownEvent) {
565 EXPECT_EQ(0, shutting_down_calls_);
566 model_->ShutDown();
567 EXPECT_EQ(1, shutting_down_calls_);
568 model_.reset();
569 }
570
571 TEST_F(EnhancedBookmarkModelTest, ObserverNodeAddedEvent) {
572 EXPECT_EQ(0, added_calls_);
573 const BookmarkNode* node = AddBookmark();
574 EXPECT_EQ(1, added_calls_);
575 EXPECT_EQ(node, last_added_);
576
577 const BookmarkNode* folder = AddFolder();
578 EXPECT_EQ(2, added_calls_);
579 EXPECT_EQ(folder, last_added_);
580 }
581
582 TEST_F(EnhancedBookmarkModelTest, ObserverNodeRemovedEvent) {
583 const BookmarkNode* node = AddBookmark();
584 const BookmarkNode* folder = AddFolder();
585
586 EXPECT_EQ(0, removed_calls_);
587 bookmark_model_->Remove(node->parent(), node->parent()->GetIndexOf(node));
588 EXPECT_EQ(1, removed_calls_);
589 EXPECT_EQ(node, last_removed_);
590
591 bookmark_model_->Remove(folder->parent(),
592 folder->parent()->GetIndexOf(folder));
593 EXPECT_EQ(2, removed_calls_);
594 EXPECT_EQ(folder, last_removed_);
595 }
596
597 TEST_F(EnhancedBookmarkModelTest, ObserverAllUserNodesRemovedEvent) {
598 AddBookmark();
599 AddFolder();
600 EXPECT_EQ(0, all_user_nodes_removed_calls_);
601 bookmark_model_->RemoveAllUserBookmarks();
602 EXPECT_EQ(0, removed_calls_);
603 EXPECT_EQ(1, all_user_nodes_removed_calls_);
604 }
605
606 TEST_F(EnhancedBookmarkModelTest, ObserverRemoteIdChangedEvent) {
607 const BookmarkNode* node1 = AddFolder();
608 const BookmarkNode* node2 = AddFolder();
609
610 EXPECT_EQ(0, remote_id_changed_calls_);
611 bookmark_model_->SetNodeMetaInfo(node1, "stars.id", "c_1");
612 base::RunLoop().RunUntilIdle();
613 EXPECT_EQ(1, remote_id_changed_calls_);
614 EXPECT_EQ(node1, last_remote_id_node_);
615 EXPECT_EQ("", last_old_remote_id_);
616 EXPECT_EQ("c_1", last_remote_id_);
617
618 bookmark_model_->SetNodeMetaInfo(node2, "stars.id", "c_2");
619 base::RunLoop().RunUntilIdle();
620 EXPECT_EQ(2, remote_id_changed_calls_);
621 EXPECT_EQ(node2, last_remote_id_node_);
622 EXPECT_EQ("", last_old_remote_id_);
623 EXPECT_EQ("c_2", last_remote_id_);
624
625 bookmark_model_->SetNodeMetaInfo(node1, "stars.id", "c_3");
626 base::RunLoop().RunUntilIdle();
627 EXPECT_EQ(3, remote_id_changed_calls_);
628 EXPECT_EQ(node1, last_remote_id_node_);
629 EXPECT_EQ("c_1", last_old_remote_id_);
630 EXPECT_EQ("c_3", last_remote_id_);
631
632 // Set to duplicate ids.
633 bookmark_model_->SetNodeMetaInfo(node2, "stars.id", "c_3");
634 EXPECT_EQ(4, remote_id_changed_calls_);
635 EXPECT_EQ(node2, last_remote_id_node_);
636 EXPECT_EQ("c_2", last_old_remote_id_);
637 EXPECT_EQ("c_3", last_remote_id_);
638 base::RunLoop().RunUntilIdle();
639 EXPECT_EQ(6, remote_id_changed_calls_);
640 EXPECT_EQ("", last_remote_id_);
641 }
642
643 TEST_F(EnhancedBookmarkModelTest, ShutDownWhileResetDuplicationScheduled) {
644 const BookmarkNode* node1 = AddBookmark();
645 const BookmarkNode* node2 = AddBookmark();
646 bookmark_model_->SetNodeMetaInfo(node1, "stars.id", "c_1");
647 bookmark_model_->SetNodeMetaInfo(node2, "stars.id", "c_1");
648 model_->ShutDown();
649 model_.reset();
650 base::RunLoop().RunUntilIdle();
651 }
OLDNEW
« no previous file with comments | « components/enhanced_bookmarks/enhanced_bookmark_model_observer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698