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

Unified Diff: components/ntp_snippets/offline_pages/offline_page_suggestions_provider_unittest.cc

Issue 2291593002: Refactor OfflinePageSuggestionsProviderTest (Closed)
Patch Set: Tim's new comments 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/ntp_snippets/offline_pages/offline_page_suggestions_provider_unittest.cc
diff --git a/components/ntp_snippets/offline_pages/offline_page_suggestions_provider_unittest.cc b/components/ntp_snippets/offline_pages/offline_page_suggestions_provider_unittest.cc
index bdceafd23489f3695232dba18db693e0f91036ba..039ac5b9869cb720d987cbf5314fd4d462041c44 100644
--- a/components/ntp_snippets/offline_pages/offline_page_suggestions_provider_unittest.cc
+++ b/components/ntp_snippets/offline_pages/offline_page_suggestions_provider_unittest.cc
@@ -75,17 +75,25 @@ OfflinePageItem CreateDummyDownload(int id) {
return CreateDummyItem(offline_pages::kAsyncNamespace, id);
}
+void CaptureDismissedSuggestions(
+ std::vector<ContentSuggestion>* captured_suggestions,
+ std::vector<ContentSuggestion> dismissed_suggestions) {
+ std::move(dismissed_suggestions.begin(), dismissed_suggestions.end(),
+ std::back_inserter(*captured_suggestions));
+}
+
} // namespace
-class MockOfflinePageModel : public StubOfflinePageModel {
+class FakeOfflinePageModel : public StubOfflinePageModel {
public:
- MockOfflinePageModel() {}
+ FakeOfflinePageModel() {}
void GetAllPages(const MultipleOfflinePageItemCallback& callback) override {
callback.Run(items_);
}
- std::vector<OfflinePageItem>* items() { return &items_; }
+ const std::vector<OfflinePageItem>& items() { return items_; }
+ std::vector<OfflinePageItem>* mutable_items() { return &items_; }
private:
std::vector<OfflinePageItem> items_;
@@ -126,8 +134,6 @@ class OfflinePageSuggestionsProviderTest : public testing::Test {
return category_factory_.FromKnownCategory(KnownCategories::DOWNLOADS);
}
- void AddItem(OfflinePageItem item) { model()->items()->push_back(item); }
-
std::string GetDummySuggestionId(Category category, int id) {
return provider_->MakeUniqueID(category, base::IntToString(id));
}
@@ -153,24 +159,13 @@ class OfflinePageSuggestionsProviderTest : public testing::Test {
return provider_->ReadDismissedIDsFromPrefs(category);
}
- // Workaround to realize a DismissedSuggestionsCallback. Because gMock can't
- // handle non-movable parameters, a helper method is needed to forward the
- // call to the actual MOCK_METHOD.
- void DismissedSuggestionsHelper(
- std::vector<ContentSuggestion> dismissed_suggestions) {
- ReceivedDismissedSuggestions(dismissed_suggestions);
- }
- MOCK_METHOD1(
- ReceivedDismissedSuggestions,
- void(const std::vector<ContentSuggestion>& dismissed_suggestions));
-
ContentSuggestionsProvider* provider() { return provider_.get(); }
- MockOfflinePageModel* model() { return &model_; }
+ FakeOfflinePageModel* model() { return &model_; }
MockContentSuggestionsProviderObserver* observer() { return &observer_; }
TestingPrefServiceSimple* pref_service() { return pref_service_.get(); }
private:
- MockOfflinePageModel model_;
+ FakeOfflinePageModel model_;
MockContentSuggestionsProviderObserver observer_;
CategoryFactory category_factory_;
std::unique_ptr<TestingPrefServiceSimple> pref_service_;
@@ -181,10 +176,10 @@ class OfflinePageSuggestionsProviderTest : public testing::Test {
};
TEST_F(OfflinePageSuggestionsProviderTest, ShouldSplitAndConvertToSuggestions) {
- AddItem(CreateDummyRecentTab(1));
- AddItem(CreateDummyRecentTab(2));
- AddItem(CreateDummyRecentTab(3));
- AddItem(CreateDummyDownload(101));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(1));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(2));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(3));
+ model()->mutable_items()->push_back(CreateDummyDownload(101));
EXPECT_CALL(
*observer(),
@@ -210,10 +205,10 @@ TEST_F(OfflinePageSuggestionsProviderTest, ShouldSplitAndConvertToSuggestions) {
}
TEST_F(OfflinePageSuggestionsProviderTest, ShouldIgnoreDisabledCategories) {
- AddItem(CreateDummyRecentTab(1));
- AddItem(CreateDummyRecentTab(2));
- AddItem(CreateDummyRecentTab(3));
- AddItem(CreateDummyDownload(101));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(1));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(2));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(3));
+ model()->mutable_items()->push_back(CreateDummyDownload(101));
// Disable recent tabs, enable downloads.
EXPECT_CALL(*observer(), OnNewSuggestions(_, recent_tabs_category(), _))
@@ -248,9 +243,9 @@ TEST_F(OfflinePageSuggestionsProviderTest, ShouldSortByMostRecentlyVisited) {
base::Time now = base::Time::Now();
base::Time yesterday = now - base::TimeDelta::FromDays(1);
base::Time tomorrow = now + base::TimeDelta::FromDays(1);
- AddItem(CreateDummyRecentTab(1, now));
- AddItem(CreateDummyRecentTab(2, yesterday));
- AddItem(CreateDummyRecentTab(3, tomorrow));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(1, now));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(2, yesterday));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(3, tomorrow));
EXPECT_CALL(
*observer(),
@@ -279,10 +274,10 @@ TEST_F(OfflinePageSuggestionsProviderTest, ShouldDeliverCorrectCategoryInfo) {
}
TEST_F(OfflinePageSuggestionsProviderTest, ShouldDismiss) {
- AddItem(CreateDummyRecentTab(1));
- AddItem(CreateDummyRecentTab(2));
- AddItem(CreateDummyRecentTab(3));
- AddItem(CreateDummyRecentTab(4));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(1));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(2));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(3));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(4));
FireOfflinePageModelChanged();
// Dismiss 2 and 3.
@@ -308,38 +303,33 @@ TEST_F(OfflinePageSuggestionsProviderTest, ShouldDismiss) {
Mock::VerifyAndClearExpectations(observer());
// And appear in the dismissed suggestions for the right category.
- EXPECT_CALL(*this, ReceivedDismissedSuggestions(UnorderedElementsAre(
- Property(&ContentSuggestion::url,
- GURL("file:///some/folder/test2.mhtml")),
- Property(&ContentSuggestion::url,
- GURL("file:///some/folder/test3.mhtml")))));
+ std::vector<ContentSuggestion> dismissed_suggestions;
provider()->GetDismissedSuggestionsForDebugging(
recent_tabs_category(),
- base::Bind(
- &OfflinePageSuggestionsProviderTest::DismissedSuggestionsHelper,
- base::Unretained(this)));
- Mock::VerifyAndClearExpectations(this);
+ base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions));
+ EXPECT_THAT(
+ dismissed_suggestions,
+ UnorderedElementsAre(Property(&ContentSuggestion::url,
+ GURL("file:///some/folder/test2.mhtml")),
+ Property(&ContentSuggestion::url,
+ GURL("file:///some/folder/test3.mhtml"))));
// The other category should have no dismissed suggestions.
- EXPECT_CALL(*this, ReceivedDismissedSuggestions(IsEmpty()));
+ dismissed_suggestions.clear();
provider()->GetDismissedSuggestionsForDebugging(
downloads_category(),
- base::Bind(
- &OfflinePageSuggestionsProviderTest::DismissedSuggestionsHelper,
- base::Unretained(this)));
- Mock::VerifyAndClearExpectations(this);
+ base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions));
+ EXPECT_THAT(dismissed_suggestions, IsEmpty());
// Clear dismissed suggestions.
provider()->ClearDismissedSuggestionsForDebugging(recent_tabs_category());
// They should be gone from the dismissed suggestions.
- EXPECT_CALL(*this, ReceivedDismissedSuggestions(IsEmpty()));
+ dismissed_suggestions.clear();
provider()->GetDismissedSuggestionsForDebugging(
recent_tabs_category(),
- base::Bind(
- &OfflinePageSuggestionsProviderTest::DismissedSuggestionsHelper,
- base::Unretained(this)));
- Mock::VerifyAndClearExpectations(this);
+ base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions));
+ EXPECT_THAT(dismissed_suggestions, IsEmpty());
// And appear in the reported suggestions for the category again.
EXPECT_CALL(*observer(),
@@ -352,9 +342,9 @@ TEST_F(OfflinePageSuggestionsProviderTest, ShouldDismiss) {
TEST_F(OfflinePageSuggestionsProviderTest,
ShouldInvalidateWhenOfflinePageDeleted) {
- AddItem(CreateDummyRecentTab(1));
- AddItem(CreateDummyRecentTab(2));
- AddItem(CreateDummyRecentTab(3));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(1));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(2));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(3));
FireOfflinePageModelChanged();
// Invalidation of suggestion 2 should be forwarded.
@@ -362,13 +352,13 @@ TEST_F(OfflinePageSuggestionsProviderTest,
*observer(),
OnSuggestionInvalidated(_, recent_tabs_category(),
GetDummySuggestionId(recent_tabs_category(), 2)));
- FireOfflinePageDeleted(model()->items()->at(1));
+ FireOfflinePageDeleted(model()->items().at(1));
}
TEST_F(OfflinePageSuggestionsProviderTest, ShouldClearDismissedOnInvalidate) {
- AddItem(CreateDummyRecentTab(1));
- AddItem(CreateDummyRecentTab(2));
- AddItem(CreateDummyRecentTab(3));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(1));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(2));
+ model()->mutable_items()->push_back(CreateDummyRecentTab(3));
FireOfflinePageModelChanged();
EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty());
@@ -378,15 +368,15 @@ TEST_F(OfflinePageSuggestionsProviderTest, ShouldClearDismissedOnInvalidate) {
EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), SizeIs(1));
EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty());
- FireOfflinePageDeleted(model()->items()->at(1));
+ FireOfflinePageDeleted(model()->items().at(1));
EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty());
}
TEST_F(OfflinePageSuggestionsProviderTest, ShouldClearDismissedOnFetch) {
- AddItem(CreateDummyDownload(1));
- AddItem(CreateDummyDownload(2));
- AddItem(CreateDummyDownload(3));
+ model()->mutable_items()->push_back(CreateDummyDownload(1));
+ model()->mutable_items()->push_back(CreateDummyDownload(2));
+ model()->mutable_items()->push_back(CreateDummyDownload(3));
FireOfflinePageModelChanged();
provider()->DismissSuggestion(GetDummySuggestionId(downloads_category(), 2));
@@ -394,13 +384,13 @@ TEST_F(OfflinePageSuggestionsProviderTest, ShouldClearDismissedOnFetch) {
EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), SizeIs(2));
- model()->items()->clear();
- AddItem(CreateDummyDownload(2));
+ model()->mutable_items()->clear();
+ model()->mutable_items()->push_back(CreateDummyDownload(2));
FireOfflinePageModelChanged();
EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), SizeIs(1));
- model()->items()->clear();
+ model()->mutable_items()->clear();
FireOfflinePageModelChanged();
EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty());
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698