| OLD | NEW |
| 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/offline_pages/recent_tab_suggestions_provider.
h" | 5 #include "components/ntp_snippets/offline_pages/recent_tab_suggestions_provider.
h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 }; | 138 }; |
| 139 | 139 |
| 140 TEST_F(RecentTabSuggestionsProviderTest, ShouldConvertToSuggestions) { | 140 TEST_F(RecentTabSuggestionsProviderTest, ShouldConvertToSuggestions) { |
| 141 std::vector<OfflinePageItem> offline_pages = CreateDummyRecentTabs({1, 2, 3}); | 141 std::vector<OfflinePageItem> offline_pages = CreateDummyRecentTabs({1, 2, 3}); |
| 142 | 142 |
| 143 EXPECT_CALL( | 143 EXPECT_CALL( |
| 144 *observer(), | 144 *observer(), |
| 145 OnNewSuggestions(_, recent_tabs_category(), | 145 OnNewSuggestions(_, recent_tabs_category(), |
| 146 UnorderedElementsAre( | 146 UnorderedElementsAre( |
| 147 Property(&ContentSuggestion::url, | 147 Property(&ContentSuggestion::url, |
| 148 GURL("file:///some/folder/test1.mhtml")), | 148 GURL("http://dummy.com/1")), |
| 149 Property(&ContentSuggestion::url, | 149 Property(&ContentSuggestion::url, |
| 150 GURL("file:///some/folder/test2.mhtml")), | 150 GURL("http://dummy.com/2")), |
| 151 Property(&ContentSuggestion::url, | 151 Property(&ContentSuggestion::url, |
| 152 GURL("file:///some/folder/test3.mhtml"))))); | 152 GURL("http://dummy.com/3"))))); |
| 153 FireOfflinePageModelChanged(offline_pages); | 153 FireOfflinePageModelChanged(offline_pages); |
| 154 } | 154 } |
| 155 | 155 |
| 156 TEST_F(RecentTabSuggestionsProviderTest, ShouldSortByMostRecentlyVisited) { | 156 TEST_F(RecentTabSuggestionsProviderTest, ShouldSortByMostRecentlyVisited) { |
| 157 base::Time now = base::Time::Now(); | 157 base::Time now = base::Time::Now(); |
| 158 base::Time yesterday = now - base::TimeDelta::FromDays(1); | 158 base::Time yesterday = now - base::TimeDelta::FromDays(1); |
| 159 base::Time tomorrow = now + base::TimeDelta::FromDays(1); | 159 base::Time tomorrow = now + base::TimeDelta::FromDays(1); |
| 160 std::vector<OfflinePageItem> offline_pages = { | 160 std::vector<OfflinePageItem> offline_pages = { |
| 161 CreateDummyRecentTab(1, now), CreateDummyRecentTab(2, yesterday), | 161 CreateDummyRecentTab(1, now), CreateDummyRecentTab(2, yesterday), |
| 162 CreateDummyRecentTab(3, tomorrow)}; | 162 CreateDummyRecentTab(3, tomorrow)}; |
| 163 | 163 |
| 164 EXPECT_CALL( | 164 EXPECT_CALL( |
| 165 *observer(), | 165 *observer(), |
| 166 OnNewSuggestions( | 166 OnNewSuggestions( |
| 167 _, recent_tabs_category(), | 167 _, recent_tabs_category(), |
| 168 ElementsAre(Property(&ContentSuggestion::url, | 168 ElementsAre(Property(&ContentSuggestion::url, |
| 169 GURL("file:///some/folder/test3.mhtml")), | 169 GURL("http://dummy.com/3")), |
| 170 Property(&ContentSuggestion::url, | 170 Property(&ContentSuggestion::url, |
| 171 GURL("file:///some/folder/test1.mhtml")), | 171 GURL("http://dummy.com/1")), |
| 172 Property(&ContentSuggestion::url, | 172 Property(&ContentSuggestion::url, |
| 173 GURL("file:///some/folder/test2.mhtml"))))); | 173 GURL("http://dummy.com/2"))))); |
| 174 FireOfflinePageModelChanged(offline_pages); | 174 FireOfflinePageModelChanged(offline_pages); |
| 175 } | 175 } |
| 176 | 176 |
| 177 TEST_F(RecentTabSuggestionsProviderTest, ShouldDeliverCorrectCategoryInfo) { | 177 TEST_F(RecentTabSuggestionsProviderTest, ShouldDeliverCorrectCategoryInfo) { |
| 178 EXPECT_FALSE( | 178 EXPECT_FALSE( |
| 179 provider()->GetCategoryInfo(recent_tabs_category()).has_more_button()); | 179 provider()->GetCategoryInfo(recent_tabs_category()).has_more_button()); |
| 180 } | 180 } |
| 181 | 181 |
| 182 TEST_F(RecentTabSuggestionsProviderTest, ShouldDismiss) { | 182 TEST_F(RecentTabSuggestionsProviderTest, ShouldDismiss) { |
| 183 // OfflinePageModel is initialised here because | 183 // OfflinePageModel is initialised here because |
| 184 // |GetDismissedSuggestionsForDebugging| may need to call |GetAllPages| | 184 // |GetDismissedSuggestionsForDebugging| may need to call |GetAllPages| |
| 185 *(model()->mutable_items()) = CreateDummyRecentTabs({1, 2, 3, 4}); | 185 *(model()->mutable_items()) = CreateDummyRecentTabs({1, 2, 3, 4}); |
| 186 FireOfflinePageModelChanged(model()->items()); | 186 FireOfflinePageModelChanged(model()->items()); |
| 187 | 187 |
| 188 // Dismiss 2 and 3. | 188 // Dismiss 2 and 3. |
| 189 EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(0); | 189 EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(0); |
| 190 provider()->DismissSuggestion(GetDummySuggestionId(2)); | 190 provider()->DismissSuggestion(GetDummySuggestionId(2)); |
| 191 provider()->DismissSuggestion(GetDummySuggestionId(3)); | 191 provider()->DismissSuggestion(GetDummySuggestionId(3)); |
| 192 Mock::VerifyAndClearExpectations(observer()); | 192 Mock::VerifyAndClearExpectations(observer()); |
| 193 | 193 |
| 194 // They should disappear from the reported suggestions. | 194 // They should disappear from the reported suggestions. |
| 195 EXPECT_CALL( | 195 EXPECT_CALL( |
| 196 *observer(), | 196 *observer(), |
| 197 OnNewSuggestions(_, recent_tabs_category(), | 197 OnNewSuggestions(_, recent_tabs_category(), |
| 198 UnorderedElementsAre( | 198 UnorderedElementsAre( |
| 199 Property(&ContentSuggestion::url, | 199 Property(&ContentSuggestion::url, |
| 200 GURL("file:///some/folder/test1.mhtml")), | 200 GURL("http://dummy.com/1")), |
| 201 Property(&ContentSuggestion::url, | 201 Property(&ContentSuggestion::url, |
| 202 GURL("file:///some/folder/test4.mhtml"))))); | 202 GURL("http://dummy.com/4"))))); |
| 203 | 203 |
| 204 FireOfflinePageModelChanged(model()->items()); | 204 FireOfflinePageModelChanged(model()->items()); |
| 205 Mock::VerifyAndClearExpectations(observer()); | 205 Mock::VerifyAndClearExpectations(observer()); |
| 206 | 206 |
| 207 // And appear in the dismissed suggestions. | 207 // And appear in the dismissed suggestions. |
| 208 std::vector<ContentSuggestion> dismissed_suggestions; | 208 std::vector<ContentSuggestion> dismissed_suggestions; |
| 209 provider()->GetDismissedSuggestionsForDebugging( | 209 provider()->GetDismissedSuggestionsForDebugging( |
| 210 recent_tabs_category(), | 210 recent_tabs_category(), |
| 211 base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions)); | 211 base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions)); |
| 212 EXPECT_THAT( | 212 EXPECT_THAT( |
| 213 dismissed_suggestions, | 213 dismissed_suggestions, |
| 214 UnorderedElementsAre(Property(&ContentSuggestion::url, | 214 UnorderedElementsAre(Property(&ContentSuggestion::url, |
| 215 GURL("file:///some/folder/test2.mhtml")), | 215 GURL("http://dummy.com/2")), |
| 216 Property(&ContentSuggestion::url, | 216 Property(&ContentSuggestion::url, |
| 217 GURL("file:///some/folder/test3.mhtml")))); | 217 GURL("http://dummy.com/3")))); |
| 218 | 218 |
| 219 // Clear dismissed suggestions. | 219 // Clear dismissed suggestions. |
| 220 provider()->ClearDismissedSuggestionsForDebugging(recent_tabs_category()); | 220 provider()->ClearDismissedSuggestionsForDebugging(recent_tabs_category()); |
| 221 | 221 |
| 222 // They should be gone from the dismissed suggestions. | 222 // They should be gone from the dismissed suggestions. |
| 223 dismissed_suggestions.clear(); | 223 dismissed_suggestions.clear(); |
| 224 provider()->GetDismissedSuggestionsForDebugging( | 224 provider()->GetDismissedSuggestionsForDebugging( |
| 225 recent_tabs_category(), | 225 recent_tabs_category(), |
| 226 base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions)); | 226 base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions)); |
| 227 EXPECT_THAT(dismissed_suggestions, IsEmpty()); | 227 EXPECT_THAT(dismissed_suggestions, IsEmpty()); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 EXPECT_THAT(ReadDismissedIDsFromPrefs(), SizeIs(2)); | 263 EXPECT_THAT(ReadDismissedIDsFromPrefs(), SizeIs(2)); |
| 264 | 264 |
| 265 FireOfflinePageModelChanged(CreateDummyRecentTabs({2})); | 265 FireOfflinePageModelChanged(CreateDummyRecentTabs({2})); |
| 266 EXPECT_THAT(ReadDismissedIDsFromPrefs(), SizeIs(1)); | 266 EXPECT_THAT(ReadDismissedIDsFromPrefs(), SizeIs(1)); |
| 267 | 267 |
| 268 FireOfflinePageModelChanged(std::vector<OfflinePageItem>()); | 268 FireOfflinePageModelChanged(std::vector<OfflinePageItem>()); |
| 269 EXPECT_THAT(ReadDismissedIDsFromPrefs(), IsEmpty()); | 269 EXPECT_THAT(ReadDismissedIDsFromPrefs(), IsEmpty()); |
| 270 } | 270 } |
| 271 | 271 |
| 272 } // namespace ntp_snippets | 272 } // namespace ntp_snippets |
| OLD | NEW |