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

Side by Side Diff: components/ntp_snippets/content_suggestions_service_unittest.cc

Issue 2260703004: Remove ContentSuggestionsProvider::GetProvidedCategories(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/ntp_snippets/content_suggestions_service.h" 5 #include "components/ntp_snippets/content_suggestions_service.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 } 64 }
65 65
66 void SetProvidedCategories(const std::vector<Category>& provided_categories) { 66 void SetProvidedCategories(const std::vector<Category>& provided_categories) {
67 statuses_.clear(); 67 statuses_.clear();
68 provided_categories_ = provided_categories; 68 provided_categories_ = provided_categories;
69 for (Category category : provided_categories) { 69 for (Category category : provided_categories) {
70 statuses_[category.id()] = CategoryStatus::AVAILABLE; 70 statuses_[category.id()] = CategoryStatus::AVAILABLE;
71 } 71 }
72 } 72 }
73 73
74 std::vector<Category> GetProvidedCategories() override {
75 return provided_categories_;
76 }
77
78 CategoryStatus GetCategoryStatus(Category category) { 74 CategoryStatus GetCategoryStatus(Category category) {
79 return statuses_[category.id()]; 75 return statuses_[category.id()];
80 } 76 }
81 77
82 CategoryInfo GetCategoryInfo(Category category) { 78 CategoryInfo GetCategoryInfo(Category category) {
83 return CategoryInfo(base::ASCIIToUTF16("Section title"), 79 return CategoryInfo(base::ASCIIToUTF16("Section title"),
84 ContentSuggestionsCardLayout::FULL_CARD, true); 80 ContentSuggestionsCardLayout::FULL_CARD, true);
85 } 81 }
86 82
87 void FireSuggestionsChanged(Category category, 83 void FireSuggestionsChanged(Category category,
88 const std::vector<int>& numbers) { 84 const std::vector<int>& numbers) {
89 observer()->OnNewSuggestions(this, category, CreateSuggestions(numbers)); 85 observer()->OnNewSuggestions(this, category, CreateSuggestions(numbers));
90 } 86 }
91 87
92 void FireCategoryStatusChanged(Category category, CategoryStatus new_status) { 88 void FireCategoryStatusChanged(Category category, CategoryStatus new_status) {
93 statuses_[category.id()] = new_status; 89 statuses_[category.id()] = new_status;
94 observer()->OnCategoryStatusChanged(this, category, new_status); 90 observer()->OnCategoryStatusChanged(this, category, new_status);
95 } 91 }
96 92
93 void FireCategoryStatusChangedWithCurrentStatus(Category category) {
94 observer()->OnCategoryStatusChanged(this, category,
Philipp Keck 2016/08/19 14:14:13 Couldn't this just go in the RegisterProvider meth
vitaliii 2016/08/19 16:14:14 Then it is not possible to do ShouldRegisterNewCat
95 statuses_[category.id()]);
96 }
97
97 void FireSuggestionInvalidated(Category category, 98 void FireSuggestionInvalidated(Category category,
98 const std::string& suggestion_id) { 99 const std::string& suggestion_id) {
99 observer()->OnSuggestionInvalidated(this, category, suggestion_id); 100 observer()->OnSuggestionInvalidated(this, category, suggestion_id);
100 } 101 }
101 102
102 MOCK_METHOD1(ClearCachedSuggestionsForDebugging, void(Category category)); 103 MOCK_METHOD1(ClearCachedSuggestionsForDebugging, void(Category category));
103 MOCK_METHOD1(GetDismissedSuggestionsForDebugging, 104 MOCK_METHOD1(GetDismissedSuggestionsForDebugging,
104 std::vector<ContentSuggestion>(Category category)); 105 std::vector<ContentSuggestion>(Category category));
105 MOCK_METHOD1(ClearDismissedSuggestionsForDebugging, void(Category category)); 106 MOCK_METHOD1(ClearDismissedSuggestionsForDebugging, void(Category category));
106 MOCK_METHOD1(DismissSuggestion, void(const std::string& suggestion_id)); 107 MOCK_METHOD1(DismissSuggestion, void(const std::string& suggestion_id));
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 Category offline_pages_category = 223 Category offline_pages_category =
223 FromKnownCategory(KnownCategories::BOOKMARKS); 224 FromKnownCategory(KnownCategories::BOOKMARKS);
224 ASSERT_THAT(providers(), IsEmpty()); 225 ASSERT_THAT(providers(), IsEmpty());
225 EXPECT_THAT(service()->GetCategories(), IsEmpty()); 226 EXPECT_THAT(service()->GetCategories(), IsEmpty());
226 EXPECT_THAT(service()->GetCategoryStatus(articles_category), 227 EXPECT_THAT(service()->GetCategoryStatus(articles_category),
227 Eq(CategoryStatus::NOT_PROVIDED)); 228 Eq(CategoryStatus::NOT_PROVIDED));
228 EXPECT_THAT(service()->GetCategoryStatus(offline_pages_category), 229 EXPECT_THAT(service()->GetCategoryStatus(offline_pages_category),
229 Eq(CategoryStatus::NOT_PROVIDED)); 230 Eq(CategoryStatus::NOT_PROVIDED));
230 231
231 MockProvider* provider1 = RegisterProvider(articles_category); 232 MockProvider* provider1 = RegisterProvider(articles_category);
233 provider1->FireCategoryStatusChangedWithCurrentStatus(articles_category);
232 EXPECT_THAT(providers().count(offline_pages_category), Eq(0ul)); 234 EXPECT_THAT(providers().count(offline_pages_category), Eq(0ul));
235 ASSERT_THAT(providers().count(articles_category), Eq(1ul));
233 EXPECT_THAT(providers().at(articles_category), Eq(provider1)); 236 EXPECT_THAT(providers().at(articles_category), Eq(provider1));
234 EXPECT_THAT(providers().size(), Eq(1ul)); 237 EXPECT_THAT(providers().size(), Eq(1ul));
235 EXPECT_THAT(service()->GetCategories(), ElementsAre(articles_category)); 238 EXPECT_THAT(service()->GetCategories(), ElementsAre(articles_category));
236 EXPECT_THAT(service()->GetCategoryStatus(articles_category), 239 EXPECT_THAT(service()->GetCategoryStatus(articles_category),
237 Eq(CategoryStatus::AVAILABLE)); 240 Eq(CategoryStatus::AVAILABLE));
238 EXPECT_THAT(service()->GetCategoryStatus(offline_pages_category), 241 EXPECT_THAT(service()->GetCategoryStatus(offline_pages_category),
239 Eq(CategoryStatus::NOT_PROVIDED)); 242 Eq(CategoryStatus::NOT_PROVIDED));
240 243
241 MockProvider* provider2 = RegisterProvider(offline_pages_category); 244 MockProvider* provider2 = RegisterProvider(offline_pages_category);
245 provider2->FireCategoryStatusChangedWithCurrentStatus(offline_pages_category);
246 ASSERT_THAT(providers().count(offline_pages_category), Eq(1ul));
242 EXPECT_THAT(providers().at(articles_category), Eq(provider1)); 247 EXPECT_THAT(providers().at(articles_category), Eq(provider1));
248 ASSERT_THAT(providers().count(articles_category), Eq(1ul));
243 EXPECT_THAT(providers().at(offline_pages_category), Eq(provider2)); 249 EXPECT_THAT(providers().at(offline_pages_category), Eq(provider2));
244 EXPECT_THAT(providers().size(), Eq(2ul)); 250 EXPECT_THAT(providers().size(), Eq(2ul));
245 EXPECT_THAT(service()->GetCategories(), 251 EXPECT_THAT(service()->GetCategories(),
246 ElementsAre(offline_pages_category, articles_category)); 252 ElementsAre(offline_pages_category, articles_category));
247 EXPECT_THAT(service()->GetCategoryStatus(articles_category), 253 EXPECT_THAT(service()->GetCategoryStatus(articles_category),
248 Eq(CategoryStatus::AVAILABLE)); 254 Eq(CategoryStatus::AVAILABLE));
249 EXPECT_THAT(service()->GetCategoryStatus(offline_pages_category), 255 EXPECT_THAT(service()->GetCategoryStatus(offline_pages_category),
250 Eq(CategoryStatus::AVAILABLE)); 256 Eq(CategoryStatus::AVAILABLE));
251 } 257 }
252 258
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 service()->RemoveObserver(&observer); 349 service()->RemoveObserver(&observer);
344 } 350 }
345 351
346 TEST_F(ContentSuggestionsServiceTest, ShouldForwardSuggestions) { 352 TEST_F(ContentSuggestionsServiceTest, ShouldForwardSuggestions) {
347 Category articles_category = FromKnownCategory(KnownCategories::ARTICLES); 353 Category articles_category = FromKnownCategory(KnownCategories::ARTICLES);
348 Category offline_pages_category = 354 Category offline_pages_category =
349 FromKnownCategory(KnownCategories::BOOKMARKS); 355 FromKnownCategory(KnownCategories::BOOKMARKS);
350 356
351 // Create and register providers 357 // Create and register providers
352 MockProvider* provider1 = RegisterProvider(articles_category); 358 MockProvider* provider1 = RegisterProvider(articles_category);
359 provider1->FireCategoryStatusChangedWithCurrentStatus(articles_category);
353 MockProvider* provider2 = RegisterProvider(offline_pages_category); 360 MockProvider* provider2 = RegisterProvider(offline_pages_category);
361 provider2->FireCategoryStatusChangedWithCurrentStatus(offline_pages_category);
362 ASSERT_THAT(providers().count(articles_category), Eq(1ul));
354 EXPECT_THAT(providers().at(articles_category), Eq(provider1)); 363 EXPECT_THAT(providers().at(articles_category), Eq(provider1));
364 ASSERT_THAT(providers().count(offline_pages_category), Eq(1ul));
355 EXPECT_THAT(providers().at(offline_pages_category), Eq(provider2)); 365 EXPECT_THAT(providers().at(offline_pages_category), Eq(provider2));
356 366
357 // Create and register observer 367 // Create and register observer
358 MockServiceObserver observer; 368 MockServiceObserver observer;
359 service()->AddObserver(&observer); 369 service()->AddObserver(&observer);
360 370
361 // Send suggestions 1 and 2 371 // Send suggestions 1 and 2
362 EXPECT_CALL(observer, OnNewSuggestions(articles_category)); 372 EXPECT_CALL(observer, OnNewSuggestions(articles_category));
363 provider1->FireSuggestionsChanged(articles_category, {1, 2}); 373 provider1->FireSuggestionsChanged(articles_category, {1, 2});
364 ExpectThatSuggestionsAre(articles_category, {1, 2}); 374 ExpectThatSuggestionsAre(articles_category, {1, 2});
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 TEST_F(ContentSuggestionsServiceTest, 419 TEST_F(ContentSuggestionsServiceTest,
410 ShouldNotReturnCategoryInfoForNonexistentCategory) { 420 ShouldNotReturnCategoryInfoForNonexistentCategory) {
411 Category category = FromKnownCategory(KnownCategories::BOOKMARKS); 421 Category category = FromKnownCategory(KnownCategories::BOOKMARKS);
412 base::Optional<CategoryInfo> result = service()->GetCategoryInfo(category); 422 base::Optional<CategoryInfo> result = service()->GetCategoryInfo(category);
413 EXPECT_FALSE(result.has_value()); 423 EXPECT_FALSE(result.has_value());
414 } 424 }
415 425
416 TEST_F(ContentSuggestionsServiceTest, ShouldReturnCategoryInfo) { 426 TEST_F(ContentSuggestionsServiceTest, ShouldReturnCategoryInfo) {
417 Category category = FromKnownCategory(KnownCategories::BOOKMARKS); 427 Category category = FromKnownCategory(KnownCategories::BOOKMARKS);
418 MockProvider* provider = RegisterProvider(category); 428 MockProvider* provider = RegisterProvider(category);
429 provider->FireCategoryStatusChangedWithCurrentStatus(category);
419 base::Optional<CategoryInfo> result = service()->GetCategoryInfo(category); 430 base::Optional<CategoryInfo> result = service()->GetCategoryInfo(category);
420 ASSERT_TRUE(result.has_value()); 431 ASSERT_TRUE(result.has_value());
421 CategoryInfo expected = provider->GetCategoryInfo(category); 432 CategoryInfo expected = provider->GetCategoryInfo(category);
422 const CategoryInfo& actual = result.value(); 433 const CategoryInfo& actual = result.value();
423 EXPECT_THAT(expected.title(), Eq(actual.title())); 434 EXPECT_THAT(expected.title(), Eq(actual.title()));
424 EXPECT_THAT(expected.card_layout(), Eq(actual.card_layout())); 435 EXPECT_THAT(expected.card_layout(), Eq(actual.card_layout()));
425 EXPECT_THAT(expected.has_more_button(), Eq(actual.has_more_button())); 436 EXPECT_THAT(expected.has_more_button(), Eq(actual.has_more_button()));
426 } 437 }
427 438
428 TEST_F(ContentSuggestionsServiceTest, 439 TEST_F(ContentSuggestionsServiceTest,
429 ShouldRegisterNewCategoryOnNewSuggestions) { 440 ShouldRegisterNewCategoryOnNewSuggestions) {
430 Category category = FromKnownCategory(KnownCategories::BOOKMARKS); 441 Category category = FromKnownCategory(KnownCategories::BOOKMARKS);
431 MockProvider* provider = RegisterProvider(category); 442 MockProvider* provider = RegisterProvider(category);
443 provider->FireCategoryStatusChangedWithCurrentStatus(category);
432 MockServiceObserver observer; 444 MockServiceObserver observer;
433 service()->AddObserver(&observer); 445 service()->AddObserver(&observer);
434 446
435 // Provider starts providing |new_category| without calling 447 // Provider starts providing |new_category| without calling
436 // |OnCategoryStatusChanged|. This is supported for now until further 448 // |OnCategoryStatusChanged|. This is supported for now until further
437 // reconsideration. 449 // reconsideration.
438 Category new_category = FromKnownCategory(KnownCategories::ARTICLES); 450 Category new_category = FromKnownCategory(KnownCategories::ARTICLES);
439 provider->SetProvidedCategories( 451 provider->SetProvidedCategories(
440 std::vector<Category>({category, new_category})); 452 std::vector<Category>({category, new_category}));
441 453
442 EXPECT_CALL(observer, OnNewSuggestions(new_category)); 454 EXPECT_CALL(observer, OnNewSuggestions(new_category));
443 EXPECT_CALL(observer, 455 EXPECT_CALL(observer,
444 OnCategoryStatusChanged(new_category, CategoryStatus::AVAILABLE)); 456 OnCategoryStatusChanged(new_category, CategoryStatus::AVAILABLE));
445 provider->FireSuggestionsChanged(new_category, {1, 2}); 457 provider->FireSuggestionsChanged(new_category, {1, 2});
446 458
447 ExpectThatSuggestionsAre(new_category, {1, 2}); 459 ExpectThatSuggestionsAre(new_category, {1, 2});
460 ASSERT_THAT(providers().count(category), Eq(1ul));
448 EXPECT_THAT(providers().at(category), Eq(provider)); 461 EXPECT_THAT(providers().at(category), Eq(provider));
449 EXPECT_THAT(service()->GetCategoryStatus(category), 462 EXPECT_THAT(service()->GetCategoryStatus(category),
450 Eq(CategoryStatus::AVAILABLE)); 463 Eq(CategoryStatus::AVAILABLE));
464 ASSERT_THAT(providers().count(new_category), Eq(1ul));
451 EXPECT_THAT(providers().at(new_category), Eq(provider)); 465 EXPECT_THAT(providers().at(new_category), Eq(provider));
452 EXPECT_THAT(service()->GetCategoryStatus(new_category), 466 EXPECT_THAT(service()->GetCategoryStatus(new_category),
453 Eq(CategoryStatus::AVAILABLE)); 467 Eq(CategoryStatus::AVAILABLE));
454 468
455 service()->RemoveObserver(&observer); 469 service()->RemoveObserver(&observer);
456 } 470 }
457 471
458 TEST_F(ContentSuggestionsServiceTest, 472 TEST_F(ContentSuggestionsServiceTest,
459 ShouldRegisterNewCategoryOnCategoryStatusChanged) { 473 ShouldRegisterNewCategoryOnCategoryStatusChanged) {
460 Category category = FromKnownCategory(KnownCategories::BOOKMARKS); 474 Category category = FromKnownCategory(KnownCategories::BOOKMARKS);
461 MockProvider* provider = RegisterProvider(category); 475 MockProvider* provider = RegisterProvider(category);
476 provider->FireCategoryStatusChangedWithCurrentStatus(category);
462 MockServiceObserver observer; 477 MockServiceObserver observer;
463 service()->AddObserver(&observer); 478 service()->AddObserver(&observer);
464 479
465 // Provider starts providing |new_category| and calls 480 // Provider starts providing |new_category| and calls
466 // |OnCategoryStatusChanged|, but the category is not yet available. 481 // |OnCategoryStatusChanged|, but the category is not yet available.
467 Category new_category = FromKnownCategory(KnownCategories::ARTICLES); 482 Category new_category = FromKnownCategory(KnownCategories::ARTICLES);
468 provider->SetProvidedCategories( 483 provider->SetProvidedCategories(
469 std::vector<Category>({category, new_category})); 484 std::vector<Category>({category, new_category}));
470 EXPECT_CALL(observer, OnCategoryStatusChanged(new_category, 485 EXPECT_CALL(observer, OnCategoryStatusChanged(new_category,
471 CategoryStatus::INITIALIZING)); 486 CategoryStatus::INITIALIZING));
472 provider->FireCategoryStatusChanged(new_category, 487 provider->FireCategoryStatusChanged(new_category,
473 CategoryStatus::INITIALIZING); 488 CategoryStatus::INITIALIZING);
474 489
490 ASSERT_THAT(providers().count(new_category), Eq(1ul));
475 EXPECT_THAT(providers().at(new_category), Eq(provider)); 491 EXPECT_THAT(providers().at(new_category), Eq(provider));
476 ExpectThatSuggestionsAre(new_category, std::vector<int>()); 492 ExpectThatSuggestionsAre(new_category, std::vector<int>());
477 EXPECT_THAT(service()->GetCategoryStatus(new_category), 493 EXPECT_THAT(service()->GetCategoryStatus(new_category),
478 Eq(CategoryStatus::INITIALIZING)); 494 Eq(CategoryStatus::INITIALIZING));
479 EXPECT_THAT(service()->GetCategories(), 495 EXPECT_THAT(service()->GetCategories(),
480 Eq(std::vector<Category>({category, new_category}))); 496 Eq(std::vector<Category>({category, new_category})));
481 497
482 service()->RemoveObserver(&observer); 498 service()->RemoveObserver(&observer);
483 } 499 }
484 500
(...skipping 12 matching lines...) Expand all
497 513
498 EXPECT_THAT(service()->GetCategoryStatus(category), 514 EXPECT_THAT(service()->GetCategoryStatus(category),
499 Eq(CategoryStatus::NOT_PROVIDED)); 515 Eq(CategoryStatus::NOT_PROVIDED));
500 EXPECT_TRUE(service()->GetCategories().empty()); 516 EXPECT_TRUE(service()->GetCategories().empty());
501 ExpectThatSuggestionsAre(category, std::vector<int>()); 517 ExpectThatSuggestionsAre(category, std::vector<int>());
502 518
503 service()->RemoveObserver(&observer); 519 service()->RemoveObserver(&observer);
504 } 520 }
505 521
506 } // namespace ntp_snippets 522 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698