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

Unified Diff: components/ntp_snippets/content_suggestions_service_unittest.cc

Issue 2618243004: Add a unit test for the BookmarkSuggestionsProvider. (Closed)
Patch Set: renamed MockProvider and updated tests comments about expected behavior Created 3 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 side-by-side diff with in-line comments
Download patch
Index: components/ntp_snippets/content_suggestions_service_unittest.cc
diff --git a/components/ntp_snippets/content_suggestions_service_unittest.cc b/components/ntp_snippets/content_suggestions_service_unittest.cc
index dc197d1ae197e4746907934c093891adc1dc1103..29ddca3131eeb5b4c20a730d89ff42334d8340ea 100644
--- a/components/ntp_snippets/content_suggestions_service_unittest.cc
+++ b/components/ntp_snippets/content_suggestions_service_unittest.cc
@@ -14,7 +14,6 @@
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
#include "components/ntp_snippets/category_info.h"
#include "components/ntp_snippets/category_rankers/constant_category_ranker.h"
#include "components/ntp_snippets/category_rankers/fake_category_ranker.h"
@@ -22,6 +21,7 @@
#include "components/ntp_snippets/category_status.h"
#include "components/ntp_snippets/content_suggestion.h"
#include "components/ntp_snippets/content_suggestions_provider.h"
+#include "components/ntp_snippets/mock_content_suggestions_provider.h"
#include "components/ntp_snippets/user_classifier.h"
#include "components/prefs/testing_pref_service.h"
#include "testing/gmock/include/gmock/gmock.h"
@@ -43,78 +43,6 @@ namespace ntp_snippets {
namespace {
-// TODO(treib): This is a weird combination of a mock and a fake. Fix this.
-class MockProvider : public ContentSuggestionsProvider {
- public:
- MockProvider(Observer* observer,
- const std::vector<Category>& provided_categories)
- : ContentSuggestionsProvider(observer) {
- SetProvidedCategories(provided_categories);
- }
-
- void SetProvidedCategories(const std::vector<Category>& provided_categories) {
- statuses_.clear();
- provided_categories_ = provided_categories;
- for (Category category : provided_categories) {
- statuses_[category.id()] = CategoryStatus::AVAILABLE;
- }
- }
-
- CategoryStatus GetCategoryStatus(Category category) override {
- return statuses_[category.id()];
- }
-
- CategoryInfo GetCategoryInfo(Category category) override {
- return CategoryInfo(base::ASCIIToUTF16("Section title"),
- ContentSuggestionsCardLayout::FULL_CARD, true, false,
- true, false,
- base::ASCIIToUTF16("No suggestions message"));
- }
-
- void FireSuggestionsChanged(
- Category category,
- std::vector<ContentSuggestion> suggestions) {
- observer()->OnNewSuggestions(this, category, std::move(suggestions));
- }
-
- void FireCategoryStatusChanged(Category category, CategoryStatus new_status) {
- statuses_[category.id()] = new_status;
- observer()->OnCategoryStatusChanged(this, category, new_status);
- }
-
- void FireCategoryStatusChangedWithCurrentStatus(Category category) {
- observer()->OnCategoryStatusChanged(this, category,
- statuses_[category.id()]);
- }
-
- void FireSuggestionInvalidated(const ContentSuggestion::ID& suggestion_id) {
- observer()->OnSuggestionInvalidated(this, suggestion_id);
- }
-
- MOCK_METHOD3(ClearHistory,
- void(base::Time begin,
- base::Time end,
- const base::Callback<bool(const GURL& url)>& filter));
- MOCK_METHOD3(Fetch,
- void(const Category&,
- const std::set<std::string>&,
- const FetchDoneCallback&));
- MOCK_METHOD1(ClearCachedSuggestions, void(Category category));
- MOCK_METHOD2(GetDismissedSuggestionsForDebugging,
- void(Category category,
- const DismissedSuggestionsCallback& callback));
- MOCK_METHOD1(ClearDismissedSuggestionsForDebugging, void(Category category));
- MOCK_METHOD1(DismissSuggestion,
- void(const ContentSuggestion::ID& suggestion_id));
- MOCK_METHOD2(FetchSuggestionImage,
- void(const ContentSuggestion::ID& suggestion_id,
- const ImageFetchedCallback& callback));
-
- private:
- std::vector<Category> provided_categories_;
- std::map<int, CategoryStatus> statuses_;
-};
-
class MockServiceObserver : public ContentSuggestionsService::Observer {
public:
MockServiceObserver() = default;
@@ -187,16 +115,18 @@ class ContentSuggestionsServiceTest : public testing::Test {
return service()->dismissed_providers_by_category_;
}
- MockProvider* MakeRegisteredMockProvider(Category provided_category) {
+ MockContentSuggestionsProvider* MakeRegisteredMockProvider(
+ Category provided_category) {
return MakeRegisteredMockProvider(
std::vector<Category>({provided_category}));
}
- MockProvider* MakeRegisteredMockProvider(
+ MockContentSuggestionsProvider* MakeRegisteredMockProvider(
const std::vector<Category>& provided_categories) {
- auto provider = base::MakeUnique<testing::StrictMock<MockProvider>>(
- service(), provided_categories);
- MockProvider* result = provider.get();
+ auto provider =
+ base::MakeUnique<testing::StrictMock<MockContentSuggestionsProvider>>(
+ service(), provided_categories);
+ MockContentSuggestionsProvider* result = provider.get();
service()->RegisterProvider(std::move(provider));
return result;
}
@@ -277,7 +207,8 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRegisterProviders) {
EXPECT_THAT(service()->GetCategoryStatus(offline_pages_category),
Eq(CategoryStatus::NOT_PROVIDED));
- MockProvider* provider1 = MakeRegisteredMockProvider(articles_category);
+ MockContentSuggestionsProvider* provider1 =
+ MakeRegisteredMockProvider(articles_category);
provider1->FireCategoryStatusChangedWithCurrentStatus(articles_category);
EXPECT_THAT(providers().count(offline_pages_category), Eq(0ul));
ASSERT_THAT(providers().count(articles_category), Eq(1ul));
@@ -290,7 +221,8 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRegisterProviders) {
EXPECT_THAT(service()->GetCategoryStatus(offline_pages_category),
Eq(CategoryStatus::NOT_PROVIDED));
- MockProvider* provider2 = MakeRegisteredMockProvider(offline_pages_category);
+ MockContentSuggestionsProvider* provider2 =
+ MakeRegisteredMockProvider(offline_pages_category);
provider2->FireCategoryStatusChangedWithCurrentStatus(offline_pages_category);
ASSERT_THAT(providers().count(offline_pages_category), Eq(1ul));
EXPECT_THAT(providers().at(articles_category), Eq(provider1));
@@ -327,8 +259,10 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRedirectFetchSuggestionImage) {
Category::FromKnownCategory(KnownCategories::ARTICLES);
Category offline_pages_category =
Category::FromKnownCategory(KnownCategories::DOWNLOADS);
- MockProvider* provider1 = MakeRegisteredMockProvider(articles_category);
- MockProvider* provider2 = MakeRegisteredMockProvider(offline_pages_category);
+ MockContentSuggestionsProvider* provider1 =
+ MakeRegisteredMockProvider(articles_category);
+ MockContentSuggestionsProvider* provider2 =
+ MakeRegisteredMockProvider(offline_pages_category);
provider1->FireSuggestionsChanged(articles_category,
CreateSuggestions(articles_category, {1}));
@@ -362,8 +296,10 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRedirectDismissSuggestion) {
Category::FromKnownCategory(KnownCategories::ARTICLES);
Category offline_pages_category =
Category::FromKnownCategory(KnownCategories::DOWNLOADS);
- MockProvider* provider1 = MakeRegisteredMockProvider(articles_category);
- MockProvider* provider2 = MakeRegisteredMockProvider(offline_pages_category);
+ MockContentSuggestionsProvider* provider1 =
+ MakeRegisteredMockProvider(articles_category);
+ MockContentSuggestionsProvider* provider2 =
+ MakeRegisteredMockProvider(offline_pages_category);
provider2->FireSuggestionsChanged(
offline_pages_category, CreateSuggestions(offline_pages_category, {11}));
@@ -378,7 +314,8 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRedirectSuggestionInvalidated) {
Category articles_category =
Category::FromKnownCategory(KnownCategories::ARTICLES);
- MockProvider* provider = MakeRegisteredMockProvider(articles_category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(articles_category);
MockServiceObserver observer;
service()->AddObserver(&observer);
@@ -411,9 +348,11 @@ TEST_F(ContentSuggestionsServiceTest, ShouldForwardSuggestions) {
Category::FromKnownCategory(KnownCategories::DOWNLOADS);
// Create and register providers
- MockProvider* provider1 = MakeRegisteredMockProvider(articles_category);
+ MockContentSuggestionsProvider* provider1 =
+ MakeRegisteredMockProvider(articles_category);
provider1->FireCategoryStatusChangedWithCurrentStatus(articles_category);
- MockProvider* provider2 = MakeRegisteredMockProvider(offline_pages_category);
+ MockContentSuggestionsProvider* provider2 =
+ MakeRegisteredMockProvider(offline_pages_category);
provider2->FireCategoryStatusChangedWithCurrentStatus(offline_pages_category);
ASSERT_THAT(providers().count(articles_category), Eq(1ul));
EXPECT_THAT(providers().at(articles_category), Eq(provider1));
@@ -485,7 +424,8 @@ TEST_F(ContentSuggestionsServiceTest,
TEST_F(ContentSuggestionsServiceTest, ShouldReturnCategoryInfo) {
Category category = Category::FromKnownCategory(KnownCategories::DOWNLOADS);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
provider->FireCategoryStatusChangedWithCurrentStatus(category);
base::Optional<CategoryInfo> result = service()->GetCategoryInfo(category);
ASSERT_TRUE(result.has_value());
@@ -501,7 +441,8 @@ TEST_F(ContentSuggestionsServiceTest, ShouldReturnCategoryInfo) {
TEST_F(ContentSuggestionsServiceTest,
ShouldRegisterNewCategoryOnNewSuggestions) {
Category category = Category::FromKnownCategory(KnownCategories::DOWNLOADS);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
provider->FireCategoryStatusChangedWithCurrentStatus(category);
MockServiceObserver observer;
service()->AddObserver(&observer);
@@ -536,7 +477,8 @@ TEST_F(ContentSuggestionsServiceTest,
TEST_F(ContentSuggestionsServiceTest,
ShouldRegisterNewCategoryOnCategoryStatusChanged) {
Category category = Category::FromKnownCategory(KnownCategories::DOWNLOADS);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
provider->FireCategoryStatusChangedWithCurrentStatus(category);
MockServiceObserver observer;
service()->AddObserver(&observer);
@@ -565,7 +507,8 @@ TEST_F(ContentSuggestionsServiceTest,
TEST_F(ContentSuggestionsServiceTest, ShouldRemoveCategoryWhenNotProvided) {
Category category = Category::FromKnownCategory(KnownCategories::DOWNLOADS);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
MockServiceObserver observer;
service()->AddObserver(&observer);
@@ -587,7 +530,8 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRemoveCategoryWhenNotProvided) {
TEST_F(ContentSuggestionsServiceTest, ShouldForwardClearHistoryToProviders) {
Category category = Category::FromKnownCategory(KnownCategories::DOWNLOADS);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
base::Time begin = base::Time::FromTimeT(123);
base::Time end = base::Time::FromTimeT(456);
EXPECT_CALL(*provider, ClearHistory(begin, end, _));
@@ -617,7 +561,8 @@ TEST_F(ContentSuggestionsServiceTest, ShouldForwardDeleteAllHistoryURLs) {
EXPECT_CALL(observer, OnFullRefreshRequired());
Category category = Category::FromKnownCategory(KnownCategories::DOWNLOADS);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
EXPECT_CALL(*provider, ClearHistory(base::Time(), base::Time::Max(), _));
static_cast<history::HistoryServiceObserver*>(service())->OnURLsDeleted(
/*history_service=*/nullptr, /*all_history=*/true, /*expired=*/false,
@@ -675,7 +620,8 @@ TEST_F(ContentSuggestionsServiceTest,
EXPECT_CALL(observer, OnFullRefreshRequired());
Category category = Category::FromKnownCategory(KnownCategories::DOWNLOADS);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
EXPECT_CALL(*provider, ClearHistory(base::Time(), base::Time::Max(), _));
static_cast<history::HistoryServiceObserver*>(service())->OnURLsDeleted(
@@ -691,7 +637,8 @@ TEST_F(ContentSuggestionsServiceTest,
TEST_F(ContentSuggestionsServiceTest, ShouldForwardFetch) {
Category category = Category::FromKnownCategory(KnownCategories::ARTICLES);
std::set<std::string> known_suggestions;
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
provider->FireCategoryStatusChangedWithCurrentStatus(category);
EXPECT_CALL(*provider, Fetch(category, known_suggestions, _));
service()->Fetch(category, known_suggestions, FetchDoneCallback());
@@ -700,7 +647,8 @@ TEST_F(ContentSuggestionsServiceTest, ShouldForwardFetch) {
TEST_F(ContentSuggestionsServiceTest, DismissAndRestoreCategory) {
// Register a category with one suggestion.
Category category = Category::FromKnownCategory(KnownCategories::ARTICLES);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
provider->FireCategoryStatusChangedWithCurrentStatus(category);
provider->FireSuggestionsChanged(category, CreateSuggestions(category, {42}));
@@ -739,7 +687,8 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRestoreDismissedCategories) {
Category category2 = Category::FromIDValue(2);
// Setup and verify initial state.
- MockProvider* provider = MakeRegisteredMockProvider({category1, category2});
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider({category1, category2});
provider->FireCategoryStatusChangedWithCurrentStatus(category1);
provider->FireCategoryStatusChangedWithCurrentStatus(category2);
@@ -786,7 +735,8 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRestoreDismissedCategories) {
TEST_F(ContentSuggestionsServiceTest, ShouldRestoreDismissalsFromPrefs) {
// Register a category with one suggestion.
Category category = Category::FromKnownCategory(KnownCategories::ARTICLES);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
provider->FireCategoryStatusChangedWithCurrentStatus(category);
// For a regular initialisation, the category is not dismissed.
@@ -824,7 +774,7 @@ TEST_F(ContentSuggestionsServiceTest, ShouldReturnCategoriesInOrderToDisplay) {
// The service is recreated to pick up the new ranker.
ResetService();
- MockProvider* provider =
+ MockContentSuggestionsProvider* provider =
MakeRegisteredMockProvider({first_category, second_category});
provider->FireCategoryStatusChangedWithCurrentStatus(first_category);
provider->FireCategoryStatusChangedWithCurrentStatus(second_category);
@@ -850,7 +800,8 @@ TEST_F(ContentSuggestionsServiceTest,
ResetService();
Category category = Category::FromKnownCategory(KnownCategories::BOOKMARKS);
- MockProvider* provider = MakeRegisteredMockProvider(category);
+ MockContentSuggestionsProvider* provider =
+ MakeRegisteredMockProvider(category);
provider->FireCategoryStatusChangedWithCurrentStatus(category);
EXPECT_CALL(*raw_mock_ranker, OnCategoryDismissed(category));

Powered by Google App Engine
This is Rietveld 408576698