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

Side by Side 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, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/offline_page_suggestions_provide r.h" 5 #include "components/ntp_snippets/offline_pages/offline_page_suggestions_provide r.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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 OfflinePageItem CreateDummyRecentTab(int id, base::Time time) { 68 OfflinePageItem CreateDummyRecentTab(int id, base::Time time) {
69 OfflinePageItem item = CreateDummyRecentTab(id); 69 OfflinePageItem item = CreateDummyRecentTab(id);
70 item.last_access_time = time; 70 item.last_access_time = time;
71 return item; 71 return item;
72 } 72 }
73 73
74 OfflinePageItem CreateDummyDownload(int id) { 74 OfflinePageItem CreateDummyDownload(int id) {
75 return CreateDummyItem(offline_pages::kAsyncNamespace, id); 75 return CreateDummyItem(offline_pages::kAsyncNamespace, id);
76 } 76 }
77 77
78 void CaptureDismissedSuggestions(
79 std::vector<ContentSuggestion>* captured_suggestions,
80 std::vector<ContentSuggestion> dismissed_suggestions) {
81 std::move(dismissed_suggestions.begin(), dismissed_suggestions.end(),
82 std::back_inserter(*captured_suggestions));
83 }
84
78 } // namespace 85 } // namespace
79 86
80 class MockOfflinePageModel : public StubOfflinePageModel { 87 class FakeOfflinePageModel : public StubOfflinePageModel {
81 public: 88 public:
82 MockOfflinePageModel() {} 89 FakeOfflinePageModel() {}
83 90
84 void GetAllPages(const MultipleOfflinePageItemCallback& callback) override { 91 void GetAllPages(const MultipleOfflinePageItemCallback& callback) override {
85 callback.Run(items_); 92 callback.Run(items_);
86 } 93 }
87 94
88 std::vector<OfflinePageItem>* items() { return &items_; } 95 const std::vector<OfflinePageItem>& items() { return items_; }
96 std::vector<OfflinePageItem>* mutable_items() { return &items_; }
89 97
90 private: 98 private:
91 std::vector<OfflinePageItem> items_; 99 std::vector<OfflinePageItem> items_;
92 }; 100 };
93 101
94 class OfflinePageSuggestionsProviderTest : public testing::Test { 102 class OfflinePageSuggestionsProviderTest : public testing::Test {
95 public: 103 public:
96 OfflinePageSuggestionsProviderTest() 104 OfflinePageSuggestionsProviderTest()
97 : pref_service_(new TestingPrefServiceSimple()) { 105 : pref_service_(new TestingPrefServiceSimple()) {
98 OfflinePageSuggestionsProvider::RegisterProfilePrefs( 106 OfflinePageSuggestionsProvider::RegisterProfilePrefs(
(...skipping 20 matching lines...) Expand all
119 } 127 }
120 128
121 Category recent_tabs_category() { 129 Category recent_tabs_category() {
122 return category_factory_.FromKnownCategory(KnownCategories::RECENT_TABS); 130 return category_factory_.FromKnownCategory(KnownCategories::RECENT_TABS);
123 } 131 }
124 132
125 Category downloads_category() { 133 Category downloads_category() {
126 return category_factory_.FromKnownCategory(KnownCategories::DOWNLOADS); 134 return category_factory_.FromKnownCategory(KnownCategories::DOWNLOADS);
127 } 135 }
128 136
129 void AddItem(OfflinePageItem item) { model()->items()->push_back(item); }
130
131 std::string GetDummySuggestionId(Category category, int id) { 137 std::string GetDummySuggestionId(Category category, int id) {
132 return provider_->MakeUniqueID(category, base::IntToString(id)); 138 return provider_->MakeUniqueID(category, base::IntToString(id));
133 } 139 }
134 140
135 ContentSuggestion CreateDummySuggestion(Category category, int id) { 141 ContentSuggestion CreateDummySuggestion(Category category, int id) {
136 std::string strid = base::IntToString(id); 142 std::string strid = base::IntToString(id);
137 ContentSuggestion result( 143 ContentSuggestion result(
138 GetDummySuggestionId(category, id), 144 GetDummySuggestionId(category, id),
139 GURL("file:///some/folder/test" + strid + ".mhtml")); 145 GURL("file:///some/folder/test" + strid + ".mhtml"));
140 result.set_title(base::UTF8ToUTF16("http://dummy.com/" + strid)); 146 result.set_title(base::UTF8ToUTF16("http://dummy.com/" + strid));
141 return result; 147 return result;
142 } 148 }
143 149
144 void FireOfflinePageModelChanged() { 150 void FireOfflinePageModelChanged() {
145 provider_->OfflinePageModelChanged(model()); 151 provider_->OfflinePageModelChanged(model());
146 } 152 }
147 153
148 void FireOfflinePageDeleted(const OfflinePageItem& item) { 154 void FireOfflinePageDeleted(const OfflinePageItem& item) {
149 provider_->OfflinePageDeleted(item.offline_id, item.client_id); 155 provider_->OfflinePageDeleted(item.offline_id, item.client_id);
150 } 156 }
151 157
152 std::set<std::string> ReadDismissedIDsFromPrefs(Category category) { 158 std::set<std::string> ReadDismissedIDsFromPrefs(Category category) {
153 return provider_->ReadDismissedIDsFromPrefs(category); 159 return provider_->ReadDismissedIDsFromPrefs(category);
154 } 160 }
155 161
156 // Workaround to realize a DismissedSuggestionsCallback. Because gMock can't
157 // handle non-movable parameters, a helper method is needed to forward the
158 // call to the actual MOCK_METHOD.
159 void DismissedSuggestionsHelper(
160 std::vector<ContentSuggestion> dismissed_suggestions) {
161 ReceivedDismissedSuggestions(dismissed_suggestions);
162 }
163 MOCK_METHOD1(
164 ReceivedDismissedSuggestions,
165 void(const std::vector<ContentSuggestion>& dismissed_suggestions));
166
167 ContentSuggestionsProvider* provider() { return provider_.get(); } 162 ContentSuggestionsProvider* provider() { return provider_.get(); }
168 MockOfflinePageModel* model() { return &model_; } 163 FakeOfflinePageModel* model() { return &model_; }
169 MockContentSuggestionsProviderObserver* observer() { return &observer_; } 164 MockContentSuggestionsProviderObserver* observer() { return &observer_; }
170 TestingPrefServiceSimple* pref_service() { return pref_service_.get(); } 165 TestingPrefServiceSimple* pref_service() { return pref_service_.get(); }
171 166
172 private: 167 private:
173 MockOfflinePageModel model_; 168 FakeOfflinePageModel model_;
174 MockContentSuggestionsProviderObserver observer_; 169 MockContentSuggestionsProviderObserver observer_;
175 CategoryFactory category_factory_; 170 CategoryFactory category_factory_;
176 std::unique_ptr<TestingPrefServiceSimple> pref_service_; 171 std::unique_ptr<TestingPrefServiceSimple> pref_service_;
177 // Last so that the dependencies are deleted after the provider. 172 // Last so that the dependencies are deleted after the provider.
178 std::unique_ptr<OfflinePageSuggestionsProvider> provider_; 173 std::unique_ptr<OfflinePageSuggestionsProvider> provider_;
179 174
180 DISALLOW_COPY_AND_ASSIGN(OfflinePageSuggestionsProviderTest); 175 DISALLOW_COPY_AND_ASSIGN(OfflinePageSuggestionsProviderTest);
181 }; 176 };
182 177
183 TEST_F(OfflinePageSuggestionsProviderTest, ShouldSplitAndConvertToSuggestions) { 178 TEST_F(OfflinePageSuggestionsProviderTest, ShouldSplitAndConvertToSuggestions) {
184 AddItem(CreateDummyRecentTab(1)); 179 model()->mutable_items()->push_back(CreateDummyRecentTab(1));
185 AddItem(CreateDummyRecentTab(2)); 180 model()->mutable_items()->push_back(CreateDummyRecentTab(2));
186 AddItem(CreateDummyRecentTab(3)); 181 model()->mutable_items()->push_back(CreateDummyRecentTab(3));
187 AddItem(CreateDummyDownload(101)); 182 model()->mutable_items()->push_back(CreateDummyDownload(101));
188 183
189 EXPECT_CALL( 184 EXPECT_CALL(
190 *observer(), 185 *observer(),
191 OnNewSuggestions(_, recent_tabs_category(), 186 OnNewSuggestions(_, recent_tabs_category(),
192 UnorderedElementsAre( 187 UnorderedElementsAre(
193 Property(&ContentSuggestion::url, 188 Property(&ContentSuggestion::url,
194 GURL("file:///some/folder/test1.mhtml")), 189 GURL("file:///some/folder/test1.mhtml")),
195 Property(&ContentSuggestion::url, 190 Property(&ContentSuggestion::url,
196 GURL("file:///some/folder/test2.mhtml")), 191 GURL("file:///some/folder/test2.mhtml")),
197 Property(&ContentSuggestion::url, 192 Property(&ContentSuggestion::url,
198 GURL("file:///some/folder/test3.mhtml"))))); 193 GURL("file:///some/folder/test3.mhtml")))));
199 194
200 EXPECT_CALL(*observer(), 195 EXPECT_CALL(*observer(),
201 OnNewSuggestions( 196 OnNewSuggestions(
202 _, downloads_category(), 197 _, downloads_category(),
203 UnorderedElementsAre(AllOf( 198 UnorderedElementsAre(AllOf(
204 Property(&ContentSuggestion::url, 199 Property(&ContentSuggestion::url,
205 GURL("file:///some/folder/test101.mhtml")), 200 GURL("file:///some/folder/test101.mhtml")),
206 Property(&ContentSuggestion::title, 201 Property(&ContentSuggestion::title,
207 base::UTF8ToUTF16("http://dummy.com/101")))))); 202 base::UTF8ToUTF16("http://dummy.com/101"))))));
208 203
209 FireOfflinePageModelChanged(); 204 FireOfflinePageModelChanged();
210 } 205 }
211 206
212 TEST_F(OfflinePageSuggestionsProviderTest, ShouldIgnoreDisabledCategories) { 207 TEST_F(OfflinePageSuggestionsProviderTest, ShouldIgnoreDisabledCategories) {
213 AddItem(CreateDummyRecentTab(1)); 208 model()->mutable_items()->push_back(CreateDummyRecentTab(1));
214 AddItem(CreateDummyRecentTab(2)); 209 model()->mutable_items()->push_back(CreateDummyRecentTab(2));
215 AddItem(CreateDummyRecentTab(3)); 210 model()->mutable_items()->push_back(CreateDummyRecentTab(3));
216 AddItem(CreateDummyDownload(101)); 211 model()->mutable_items()->push_back(CreateDummyDownload(101));
217 212
218 // Disable recent tabs, enable downloads. 213 // Disable recent tabs, enable downloads.
219 EXPECT_CALL(*observer(), OnNewSuggestions(_, recent_tabs_category(), _)) 214 EXPECT_CALL(*observer(), OnNewSuggestions(_, recent_tabs_category(), _))
220 .Times(0); 215 .Times(0);
221 EXPECT_CALL( 216 EXPECT_CALL(
222 *observer(), 217 *observer(),
223 OnNewSuggestions(_, downloads_category(), 218 OnNewSuggestions(_, downloads_category(),
224 UnorderedElementsAre(Property( 219 UnorderedElementsAre(Property(
225 &ContentSuggestion::url, 220 &ContentSuggestion::url,
226 GURL("file:///some/folder/test101.mhtml"))))); 221 GURL("file:///some/folder/test101.mhtml")))));
(...skipping 14 matching lines...) Expand all
241 EXPECT_CALL(*observer(), OnNewSuggestions(_, downloads_category(), _)) 236 EXPECT_CALL(*observer(), OnNewSuggestions(_, downloads_category(), _))
242 .Times(0); 237 .Times(0);
243 RecreateProvider(true, false, true); 238 RecreateProvider(true, false, true);
244 Mock::VerifyAndClearExpectations(observer()); 239 Mock::VerifyAndClearExpectations(observer());
245 } 240 }
246 241
247 TEST_F(OfflinePageSuggestionsProviderTest, ShouldSortByMostRecentlyVisited) { 242 TEST_F(OfflinePageSuggestionsProviderTest, ShouldSortByMostRecentlyVisited) {
248 base::Time now = base::Time::Now(); 243 base::Time now = base::Time::Now();
249 base::Time yesterday = now - base::TimeDelta::FromDays(1); 244 base::Time yesterday = now - base::TimeDelta::FromDays(1);
250 base::Time tomorrow = now + base::TimeDelta::FromDays(1); 245 base::Time tomorrow = now + base::TimeDelta::FromDays(1);
251 AddItem(CreateDummyRecentTab(1, now)); 246 model()->mutable_items()->push_back(CreateDummyRecentTab(1, now));
252 AddItem(CreateDummyRecentTab(2, yesterday)); 247 model()->mutable_items()->push_back(CreateDummyRecentTab(2, yesterday));
253 AddItem(CreateDummyRecentTab(3, tomorrow)); 248 model()->mutable_items()->push_back(CreateDummyRecentTab(3, tomorrow));
254 249
255 EXPECT_CALL( 250 EXPECT_CALL(
256 *observer(), 251 *observer(),
257 OnNewSuggestions( 252 OnNewSuggestions(
258 _, recent_tabs_category(), 253 _, recent_tabs_category(),
259 ElementsAre(Property(&ContentSuggestion::url, 254 ElementsAre(Property(&ContentSuggestion::url,
260 GURL("file:///some/folder/test3.mhtml")), 255 GURL("file:///some/folder/test3.mhtml")),
261 Property(&ContentSuggestion::url, 256 Property(&ContentSuggestion::url,
262 GURL("file:///some/folder/test1.mhtml")), 257 GURL("file:///some/folder/test1.mhtml")),
263 Property(&ContentSuggestion::url, 258 Property(&ContentSuggestion::url,
264 GURL("file:///some/folder/test2.mhtml"))))); 259 GURL("file:///some/folder/test2.mhtml")))));
265 EXPECT_CALL(*observer(), OnNewSuggestions(_, downloads_category(), _)); 260 EXPECT_CALL(*observer(), OnNewSuggestions(_, downloads_category(), _));
266 FireOfflinePageModelChanged(); 261 FireOfflinePageModelChanged();
267 } 262 }
268 263
269 TEST_F(OfflinePageSuggestionsProviderTest, ShouldDeliverCorrectCategoryInfo) { 264 TEST_F(OfflinePageSuggestionsProviderTest, ShouldDeliverCorrectCategoryInfo) {
270 EXPECT_FALSE( 265 EXPECT_FALSE(
271 provider()->GetCategoryInfo(recent_tabs_category()).has_more_button()); 266 provider()->GetCategoryInfo(recent_tabs_category()).has_more_button());
272 EXPECT_TRUE( 267 EXPECT_TRUE(
273 provider()->GetCategoryInfo(downloads_category()).has_more_button()); 268 provider()->GetCategoryInfo(downloads_category()).has_more_button());
274 RecreateProvider(true, true, false); 269 RecreateProvider(true, true, false);
275 EXPECT_FALSE( 270 EXPECT_FALSE(
276 provider()->GetCategoryInfo(recent_tabs_category()).has_more_button()); 271 provider()->GetCategoryInfo(recent_tabs_category()).has_more_button());
277 EXPECT_FALSE( 272 EXPECT_FALSE(
278 provider()->GetCategoryInfo(downloads_category()).has_more_button()); 273 provider()->GetCategoryInfo(downloads_category()).has_more_button());
279 } 274 }
280 275
281 TEST_F(OfflinePageSuggestionsProviderTest, ShouldDismiss) { 276 TEST_F(OfflinePageSuggestionsProviderTest, ShouldDismiss) {
282 AddItem(CreateDummyRecentTab(1)); 277 model()->mutable_items()->push_back(CreateDummyRecentTab(1));
283 AddItem(CreateDummyRecentTab(2)); 278 model()->mutable_items()->push_back(CreateDummyRecentTab(2));
284 AddItem(CreateDummyRecentTab(3)); 279 model()->mutable_items()->push_back(CreateDummyRecentTab(3));
285 AddItem(CreateDummyRecentTab(4)); 280 model()->mutable_items()->push_back(CreateDummyRecentTab(4));
286 FireOfflinePageModelChanged(); 281 FireOfflinePageModelChanged();
287 282
288 // Dismiss 2 and 3. 283 // Dismiss 2 and 3.
289 EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(0); 284 EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(0);
290 provider()->DismissSuggestion( 285 provider()->DismissSuggestion(
291 GetDummySuggestionId(recent_tabs_category(), 2)); 286 GetDummySuggestionId(recent_tabs_category(), 2));
292 provider()->DismissSuggestion( 287 provider()->DismissSuggestion(
293 GetDummySuggestionId(recent_tabs_category(), 3)); 288 GetDummySuggestionId(recent_tabs_category(), 3));
294 Mock::VerifyAndClearExpectations(observer()); 289 Mock::VerifyAndClearExpectations(observer());
295 290
296 // They should disappear from the reported suggestions. 291 // They should disappear from the reported suggestions.
297 EXPECT_CALL( 292 EXPECT_CALL(
298 *observer(), 293 *observer(),
299 OnNewSuggestions(_, recent_tabs_category(), 294 OnNewSuggestions(_, recent_tabs_category(),
300 UnorderedElementsAre( 295 UnorderedElementsAre(
301 Property(&ContentSuggestion::url, 296 Property(&ContentSuggestion::url,
302 GURL("file:///some/folder/test1.mhtml")), 297 GURL("file:///some/folder/test1.mhtml")),
303 Property(&ContentSuggestion::url, 298 Property(&ContentSuggestion::url,
304 GURL("file:///some/folder/test4.mhtml"))))); 299 GURL("file:///some/folder/test4.mhtml")))));
305 EXPECT_CALL(*observer(), 300 EXPECT_CALL(*observer(),
306 OnNewSuggestions(_, downloads_category(), IsEmpty())); 301 OnNewSuggestions(_, downloads_category(), IsEmpty()));
307 FireOfflinePageModelChanged(); 302 FireOfflinePageModelChanged();
308 Mock::VerifyAndClearExpectations(observer()); 303 Mock::VerifyAndClearExpectations(observer());
309 304
310 // And appear in the dismissed suggestions for the right category. 305 // And appear in the dismissed suggestions for the right category.
311 EXPECT_CALL(*this, ReceivedDismissedSuggestions(UnorderedElementsAre( 306 std::vector<ContentSuggestion> dismissed_suggestions;
312 Property(&ContentSuggestion::url,
313 GURL("file:///some/folder/test2.mhtml")),
314 Property(&ContentSuggestion::url,
315 GURL("file:///some/folder/test3.mhtml")))));
316 provider()->GetDismissedSuggestionsForDebugging( 307 provider()->GetDismissedSuggestionsForDebugging(
317 recent_tabs_category(), 308 recent_tabs_category(),
318 base::Bind( 309 base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions));
319 &OfflinePageSuggestionsProviderTest::DismissedSuggestionsHelper, 310 EXPECT_THAT(
320 base::Unretained(this))); 311 dismissed_suggestions,
321 Mock::VerifyAndClearExpectations(this); 312 UnorderedElementsAre(Property(&ContentSuggestion::url,
313 GURL("file:///some/folder/test2.mhtml")),
314 Property(&ContentSuggestion::url,
315 GURL("file:///some/folder/test3.mhtml"))));
322 316
323 // The other category should have no dismissed suggestions. 317 // The other category should have no dismissed suggestions.
324 EXPECT_CALL(*this, ReceivedDismissedSuggestions(IsEmpty())); 318 dismissed_suggestions.clear();
325 provider()->GetDismissedSuggestionsForDebugging( 319 provider()->GetDismissedSuggestionsForDebugging(
326 downloads_category(), 320 downloads_category(),
327 base::Bind( 321 base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions));
328 &OfflinePageSuggestionsProviderTest::DismissedSuggestionsHelper, 322 EXPECT_THAT(dismissed_suggestions, IsEmpty());
329 base::Unretained(this)));
330 Mock::VerifyAndClearExpectations(this);
331 323
332 // Clear dismissed suggestions. 324 // Clear dismissed suggestions.
333 provider()->ClearDismissedSuggestionsForDebugging(recent_tabs_category()); 325 provider()->ClearDismissedSuggestionsForDebugging(recent_tabs_category());
334 326
335 // They should be gone from the dismissed suggestions. 327 // They should be gone from the dismissed suggestions.
336 EXPECT_CALL(*this, ReceivedDismissedSuggestions(IsEmpty())); 328 dismissed_suggestions.clear();
337 provider()->GetDismissedSuggestionsForDebugging( 329 provider()->GetDismissedSuggestionsForDebugging(
338 recent_tabs_category(), 330 recent_tabs_category(),
339 base::Bind( 331 base::Bind(&CaptureDismissedSuggestions, &dismissed_suggestions));
340 &OfflinePageSuggestionsProviderTest::DismissedSuggestionsHelper, 332 EXPECT_THAT(dismissed_suggestions, IsEmpty());
341 base::Unretained(this)));
342 Mock::VerifyAndClearExpectations(this);
343 333
344 // And appear in the reported suggestions for the category again. 334 // And appear in the reported suggestions for the category again.
345 EXPECT_CALL(*observer(), 335 EXPECT_CALL(*observer(),
346 OnNewSuggestions(_, recent_tabs_category(), SizeIs(4))); 336 OnNewSuggestions(_, recent_tabs_category(), SizeIs(4)));
347 EXPECT_CALL(*observer(), 337 EXPECT_CALL(*observer(),
348 OnNewSuggestions(_, downloads_category(), IsEmpty())); 338 OnNewSuggestions(_, downloads_category(), IsEmpty()));
349 FireOfflinePageModelChanged(); 339 FireOfflinePageModelChanged();
350 Mock::VerifyAndClearExpectations(observer()); 340 Mock::VerifyAndClearExpectations(observer());
351 } 341 }
352 342
353 TEST_F(OfflinePageSuggestionsProviderTest, 343 TEST_F(OfflinePageSuggestionsProviderTest,
354 ShouldInvalidateWhenOfflinePageDeleted) { 344 ShouldInvalidateWhenOfflinePageDeleted) {
355 AddItem(CreateDummyRecentTab(1)); 345 model()->mutable_items()->push_back(CreateDummyRecentTab(1));
356 AddItem(CreateDummyRecentTab(2)); 346 model()->mutable_items()->push_back(CreateDummyRecentTab(2));
357 AddItem(CreateDummyRecentTab(3)); 347 model()->mutable_items()->push_back(CreateDummyRecentTab(3));
358 FireOfflinePageModelChanged(); 348 FireOfflinePageModelChanged();
359 349
360 // Invalidation of suggestion 2 should be forwarded. 350 // Invalidation of suggestion 2 should be forwarded.
361 EXPECT_CALL( 351 EXPECT_CALL(
362 *observer(), 352 *observer(),
363 OnSuggestionInvalidated(_, recent_tabs_category(), 353 OnSuggestionInvalidated(_, recent_tabs_category(),
364 GetDummySuggestionId(recent_tabs_category(), 2))); 354 GetDummySuggestionId(recent_tabs_category(), 2)));
365 FireOfflinePageDeleted(model()->items()->at(1)); 355 FireOfflinePageDeleted(model()->items().at(1));
366 } 356 }
367 357
368 TEST_F(OfflinePageSuggestionsProviderTest, ShouldClearDismissedOnInvalidate) { 358 TEST_F(OfflinePageSuggestionsProviderTest, ShouldClearDismissedOnInvalidate) {
369 AddItem(CreateDummyRecentTab(1)); 359 model()->mutable_items()->push_back(CreateDummyRecentTab(1));
370 AddItem(CreateDummyRecentTab(2)); 360 model()->mutable_items()->push_back(CreateDummyRecentTab(2));
371 AddItem(CreateDummyRecentTab(3)); 361 model()->mutable_items()->push_back(CreateDummyRecentTab(3));
372 FireOfflinePageModelChanged(); 362 FireOfflinePageModelChanged();
373 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty()); 363 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
374 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty()); 364 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty());
375 365
376 provider()->DismissSuggestion( 366 provider()->DismissSuggestion(
377 GetDummySuggestionId(recent_tabs_category(), 2)); 367 GetDummySuggestionId(recent_tabs_category(), 2));
378 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), SizeIs(1)); 368 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), SizeIs(1));
379 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty()); 369 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty());
380 370
381 FireOfflinePageDeleted(model()->items()->at(1)); 371 FireOfflinePageDeleted(model()->items().at(1));
382 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty()); 372 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
383 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty()); 373 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty());
384 } 374 }
385 375
386 TEST_F(OfflinePageSuggestionsProviderTest, ShouldClearDismissedOnFetch) { 376 TEST_F(OfflinePageSuggestionsProviderTest, ShouldClearDismissedOnFetch) {
387 AddItem(CreateDummyDownload(1)); 377 model()->mutable_items()->push_back(CreateDummyDownload(1));
388 AddItem(CreateDummyDownload(2)); 378 model()->mutable_items()->push_back(CreateDummyDownload(2));
389 AddItem(CreateDummyDownload(3)); 379 model()->mutable_items()->push_back(CreateDummyDownload(3));
390 FireOfflinePageModelChanged(); 380 FireOfflinePageModelChanged();
391 381
392 provider()->DismissSuggestion(GetDummySuggestionId(downloads_category(), 2)); 382 provider()->DismissSuggestion(GetDummySuggestionId(downloads_category(), 2));
393 provider()->DismissSuggestion(GetDummySuggestionId(downloads_category(), 3)); 383 provider()->DismissSuggestion(GetDummySuggestionId(downloads_category(), 3));
394 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty()); 384 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
395 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), SizeIs(2)); 385 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), SizeIs(2));
396 386
397 model()->items()->clear(); 387 model()->mutable_items()->clear();
398 AddItem(CreateDummyDownload(2)); 388 model()->mutable_items()->push_back(CreateDummyDownload(2));
399 FireOfflinePageModelChanged(); 389 FireOfflinePageModelChanged();
400 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty()); 390 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
401 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), SizeIs(1)); 391 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), SizeIs(1));
402 392
403 model()->items()->clear(); 393 model()->mutable_items()->clear();
404 FireOfflinePageModelChanged(); 394 FireOfflinePageModelChanged();
405 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty()); 395 EXPECT_THAT(ReadDismissedIDsFromPrefs(recent_tabs_category()), IsEmpty());
406 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty()); 396 EXPECT_THAT(ReadDismissedIDsFromPrefs(downloads_category()), IsEmpty());
407 } 397 }
408 398
409 } // namespace ntp_snippets 399 } // namespace ntp_snippets
OLDNEW
« 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