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)); |