| Index: components/ntp_snippets/offline_pages/recent_tab_suggestions_provider_unittest.cc
|
| diff --git a/components/ntp_snippets/offline_pages/recent_tab_suggestions_provider_unittest.cc b/components/ntp_snippets/offline_pages/recent_tab_suggestions_provider_unittest.cc
|
| index 3eb6b1cd47ddb7996bb711fa0753e0dee96df344..9b76ec4ac39535fd5c1a4a61062086faef09d474 100644
|
| --- a/components/ntp_snippets/offline_pages/recent_tab_suggestions_provider_unittest.cc
|
| +++ b/components/ntp_snippets/offline_pages/recent_tab_suggestions_provider_unittest.cc
|
| @@ -79,12 +79,17 @@ class RecentTabSuggestionsProviderTest : public testing::Test {
|
| return ContentSuggestion::ID(recent_tabs_category(), base::IntToString(id));
|
| }
|
|
|
| - void FireOfflinePageModelChanged(const std::vector<OfflinePageItem>& items) {
|
| - *(model_.mutable_items()) = items;
|
| - provider_->OfflinePageModelChanged(&model_);
|
| + void AddOfflinePageToModel(const OfflinePageItem item) {
|
| + model_.mutable_items()->push_back(item);
|
| + provider_->OfflinePageAdded(&model_, item);
|
| }
|
|
|
| void FireOfflinePageDeleted(const OfflinePageItem& item) {
|
| + auto iter = std::remove(model_.mutable_items()->begin(),
|
| + model_.mutable_items()->end(), item);
|
| + auto end = model_.mutable_items()->end();
|
| + model_.mutable_items()->erase(iter, end);
|
| +
|
| provider_->OfflinePageDeleted(item.offline_id, item.client_id);
|
| }
|
|
|
| @@ -109,6 +114,11 @@ class RecentTabSuggestionsProviderTest : public testing::Test {
|
| };
|
|
|
| TEST_F(RecentTabSuggestionsProviderTest, ShouldConvertToSuggestions) {
|
| + auto recent_tabs_list = CreateDummyRecentTabs({1, 2});
|
| + EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(2);
|
| + for (auto& recent_tab : recent_tabs_list)
|
| + AddOfflinePageToModel(recent_tab);
|
| +
|
| EXPECT_CALL(
|
| *observer(),
|
| OnNewSuggestions(_, recent_tabs_category(),
|
| @@ -119,16 +129,29 @@ TEST_F(RecentTabSuggestionsProviderTest, ShouldConvertToSuggestions) {
|
| GURL("http://dummy.com/2")),
|
| Property(&ContentSuggestion::url,
|
| GURL("http://dummy.com/3")))));
|
| - FireOfflinePageModelChanged(CreateDummyRecentTabs({1, 2, 3}));
|
| + AddOfflinePageToModel(CreateDummyRecentTab(3));
|
| }
|
|
|
| TEST_F(RecentTabSuggestionsProviderTest, ShouldSortByMostRecentlyVisited) {
|
| base::Time now = base::Time::Now();
|
| base::Time yesterday = now - base::TimeDelta::FromDays(1);
|
| base::Time tomorrow = now + base::TimeDelta::FromDays(1);
|
| - std::vector<OfflinePageItem> offline_pages = {
|
| - CreateDummyRecentTab(1, now), CreateDummyRecentTab(2, yesterday),
|
| - CreateDummyRecentTab(3, tomorrow)};
|
| +
|
| + EXPECT_CALL(
|
| + *observer(),
|
| + OnNewSuggestions(_, recent_tabs_category(),
|
| + ElementsAre(Property(&ContentSuggestion::url,
|
| + GURL("http://dummy.com/1")))));
|
| + AddOfflinePageToModel(CreateDummyRecentTab(1, now));
|
| +
|
| + EXPECT_CALL(
|
| + *observer(),
|
| + OnNewSuggestions(
|
| + _, recent_tabs_category(),
|
| + ElementsAre(
|
| + Property(&ContentSuggestion::url, GURL("http://dummy.com/1")),
|
| + Property(&ContentSuggestion::url, GURL("http://dummy.com/2")))));
|
| + AddOfflinePageToModel(CreateDummyRecentTab(2, yesterday));
|
|
|
| EXPECT_CALL(
|
| *observer(),
|
| @@ -140,7 +163,7 @@ TEST_F(RecentTabSuggestionsProviderTest, ShouldSortByMostRecentlyVisited) {
|
| GURL("http://dummy.com/1")),
|
| Property(&ContentSuggestion::url,
|
| GURL("http://dummy.com/2")))));
|
| - FireOfflinePageModelChanged(offline_pages);
|
| + AddOfflinePageToModel(CreateDummyRecentTab(3, tomorrow));
|
| }
|
|
|
| TEST_F(RecentTabSuggestionsProviderTest, ShouldDeliverCorrectCategoryInfo) {
|
| @@ -154,7 +177,10 @@ TEST_F(RecentTabSuggestionsProviderTest, ShouldDeliverCorrectCategoryInfo) {
|
| }
|
|
|
| TEST_F(RecentTabSuggestionsProviderTest, ShouldDismiss) {
|
| - FireOfflinePageModelChanged(CreateDummyRecentTabs({1, 2, 3, 4}));
|
| + EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(4);
|
| + auto recent_tabs_list = CreateDummyRecentTabs({1, 2, 3, 4});
|
| + for (auto& recent_tab : recent_tabs_list)
|
| + AddOfflinePageToModel(recent_tab);
|
|
|
| // Dismiss 2 and 3.
|
| EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(0);
|
| @@ -172,7 +198,8 @@ TEST_F(RecentTabSuggestionsProviderTest, ShouldDismiss) {
|
| Property(&ContentSuggestion::url,
|
| GURL("http://dummy.com/4")))));
|
|
|
| - FireOfflinePageModelChanged(model()->items());
|
| + AddOfflinePageToModel(ntp_snippets::test::CreateDummyOfflinePageItem(
|
| + 4, offline_pages::kDefaultNamespace));
|
| Mock::VerifyAndClearExpectations(observer());
|
|
|
| // And appear in the dismissed suggestions.
|
| @@ -200,14 +227,17 @@ TEST_F(RecentTabSuggestionsProviderTest, ShouldDismiss) {
|
| // And appear in the reported suggestions for the category again.
|
| EXPECT_CALL(*observer(),
|
| OnNewSuggestions(_, recent_tabs_category(), SizeIs(4)));
|
| - FireOfflinePageModelChanged(model()->items());
|
| + AddOfflinePageToModel(ntp_snippets::test::CreateDummyOfflinePageItem(
|
| + 5, offline_pages::kDefaultNamespace));
|
| Mock::VerifyAndClearExpectations(observer());
|
| }
|
|
|
| TEST_F(RecentTabSuggestionsProviderTest,
|
| ShouldInvalidateWhenOfflinePageDeleted) {
|
| + EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(3);
|
| std::vector<OfflinePageItem> offline_pages = CreateDummyRecentTabs({1, 2, 3});
|
| - FireOfflinePageModelChanged(offline_pages);
|
| + for (auto& recent_tab : offline_pages)
|
| + AddOfflinePageToModel(recent_tab);
|
|
|
| // Invalidation of suggestion 2 should be forwarded.
|
| EXPECT_CALL(*observer(), OnSuggestionInvalidated(_, GetDummySuggestionId(2)));
|
| @@ -215,8 +245,10 @@ TEST_F(RecentTabSuggestionsProviderTest,
|
| }
|
|
|
| TEST_F(RecentTabSuggestionsProviderTest, ShouldClearDismissedOnInvalidate) {
|
| + EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(3);
|
| std::vector<OfflinePageItem> offline_pages = CreateDummyRecentTabs({1, 2, 3});
|
| - FireOfflinePageModelChanged(offline_pages);
|
| + for (auto& recent_tab : offline_pages)
|
| + AddOfflinePageToModel(recent_tab);
|
| EXPECT_THAT(ReadDismissedIDsFromPrefs(), IsEmpty());
|
|
|
| provider()->DismissSuggestion(GetDummySuggestionId(2));
|
| @@ -227,16 +259,20 @@ TEST_F(RecentTabSuggestionsProviderTest, ShouldClearDismissedOnInvalidate) {
|
| }
|
|
|
| TEST_F(RecentTabSuggestionsProviderTest, ShouldClearDismissedOnFetch) {
|
| - FireOfflinePageModelChanged(CreateDummyRecentTabs({1, 2, 3}));
|
| + EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(3);
|
| + std::vector<OfflinePageItem> offline_pages = CreateDummyRecentTabs({1, 2, 3});
|
| + for (auto& recent_tab : offline_pages)
|
| + AddOfflinePageToModel(recent_tab);
|
|
|
| provider()->DismissSuggestion(GetDummySuggestionId(2));
|
| provider()->DismissSuggestion(GetDummySuggestionId(3));
|
| EXPECT_THAT(ReadDismissedIDsFromPrefs(), SizeIs(2));
|
|
|
| - FireOfflinePageModelChanged(CreateDummyRecentTabs({2}));
|
| + FireOfflinePageDeleted(offline_pages[0]);
|
| + FireOfflinePageDeleted(offline_pages[2]);
|
| EXPECT_THAT(ReadDismissedIDsFromPrefs(), SizeIs(1));
|
|
|
| - FireOfflinePageModelChanged(std::vector<OfflinePageItem>());
|
| + FireOfflinePageDeleted(offline_pages[1]);
|
| EXPECT_THAT(ReadDismissedIDsFromPrefs(), IsEmpty());
|
| }
|
|
|
|
|