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

Side by Side Diff: components/offline_pages/background/request_queue_store_unittest.cc

Issue 2363563002: [Offline pages] Implementation of RQStore.UpdateRequests with StoreUpdateResult (Closed)
Patch Set: Created 4 years, 2 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
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/offline_pages/background/request_queue_store.h" 5 #include "components/offline_pages/background/request_queue_store.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 void PumpLoop(); 51 void PumpLoop();
52 void ClearResults(); 52 void ClearResults();
53 53
54 // Callback used for get requests. 54 // Callback used for get requests.
55 void GetRequestsDone(bool result, 55 void GetRequestsDone(bool result,
56 std::vector<std::unique_ptr<SavePageRequest>> requests); 56 std::vector<std::unique_ptr<SavePageRequest>> requests);
57 // Callback used for add/update request. 57 // Callback used for add/update request.
58 void AddOrUpdateDone(UpdateStatus result); 58 void AddOrUpdateDone(UpdateStatus result);
59 void AddRequestDone(ItemActionStatus status); 59 void AddRequestDone(ItemActionStatus status);
60 void UpdateRequestDone(std::unique_ptr<UpdateRequestsResult> result);
60 void UpdateMultipleRequestsDone( 61 void UpdateMultipleRequestsDone(
61 const RequestQueue::UpdateMultipleRequestResults& results, 62 const RequestQueue::UpdateMultipleRequestResults& results,
62 std::vector<std::unique_ptr<SavePageRequest>> requests); 63 std::vector<std::unique_ptr<SavePageRequest>> requests);
63 // Callback used for remove requests. 64 // Callback used for remove requests.
64 void RemoveDone(const RequestQueue::UpdateMultipleRequestResults& results, 65 void RemoveDone(const RequestQueue::UpdateMultipleRequestResults& results,
65 std::vector<std::unique_ptr<SavePageRequest>> requests); 66 std::vector<std::unique_ptr<SavePageRequest>> requests);
66 // Callback used for reset. 67 // Callback used for reset.
67 void ResetDone(bool result); 68 void ResetDone(bool result);
68 69
69 LastResult last_result() const { return last_result_; } 70 LastResult last_result() const { return last_result_; }
70 UpdateStatus last_update_status() const { return last_update_status_; } 71 UpdateStatus last_update_status() const { return last_update_status_; }
71 const RequestQueue::UpdateMultipleRequestResults& 72 const RequestQueue::UpdateMultipleRequestResults&
72 last_multiple_update_results() const { 73 last_multiple_update_results() const {
73 return last_multiple_update_results_; 74 return last_multiple_update_results_;
74 } 75 }
75 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() 76 const RequestQueue::UpdateMultipleRequestResults& last_remove_results()
76 const { 77 const {
77 return last_remove_results_; 78 return last_remove_results_;
78 } 79 }
79 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const { 80 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const {
80 return last_requests_; 81 return last_requests_;
81 } 82 }
82 ItemActionStatus last_add_status() const { return last_add_status_; } 83 ItemActionStatus last_add_status() const { return last_add_status_; }
83 84
85 UpdateRequestsResult* last_update_result() const {
86 return last_update_result_.get();
87 }
88
84 protected: 89 protected:
85 base::ScopedTempDir temp_directory_; 90 base::ScopedTempDir temp_directory_;
86 91
87 private: 92 private:
88 LastResult last_result_; 93 LastResult last_result_;
89 UpdateStatus last_update_status_; 94 UpdateStatus last_update_status_;
90 ItemActionStatus last_add_status_; 95 ItemActionStatus last_add_status_;
96 std::unique_ptr<UpdateRequestsResult> last_update_result_;
91 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_; 97 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_;
92 RequestQueue::UpdateMultipleRequestResults last_remove_results_; 98 RequestQueue::UpdateMultipleRequestResults last_remove_results_;
93 std::vector<std::unique_ptr<SavePageRequest>> last_requests_; 99 std::vector<std::unique_ptr<SavePageRequest>> last_requests_;
94 100
95 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 101 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
96 base::ThreadTaskRunnerHandle task_runner_handle_; 102 base::ThreadTaskRunnerHandle task_runner_handle_;
97 }; 103 };
98 104
99 RequestQueueStoreTestBase::RequestQueueStoreTestBase() 105 RequestQueueStoreTestBase::RequestQueueStoreTestBase()
100 : last_result_(LastResult::kNone), 106 : last_result_(LastResult::kNone),
(...skipping 12 matching lines...) Expand all
113 void RequestQueueStoreTestBase::PumpLoop() { 119 void RequestQueueStoreTestBase::PumpLoop() {
114 task_runner_->RunUntilIdle(); 120 task_runner_->RunUntilIdle();
115 } 121 }
116 122
117 void RequestQueueStoreTestBase::ClearResults() { 123 void RequestQueueStoreTestBase::ClearResults() {
118 last_result_ = LastResult::kNone; 124 last_result_ = LastResult::kNone;
119 last_update_status_ = UpdateStatus::FAILED; 125 last_update_status_ = UpdateStatus::FAILED;
120 last_add_status_ = ItemActionStatus::NOT_FOUND; 126 last_add_status_ = ItemActionStatus::NOT_FOUND;
121 last_remove_results_.clear(); 127 last_remove_results_.clear();
122 last_requests_.clear(); 128 last_requests_.clear();
129 last_update_result_.reset(nullptr);
123 } 130 }
124 131
125 void RequestQueueStoreTestBase::GetRequestsDone( 132 void RequestQueueStoreTestBase::GetRequestsDone(
126 bool result, 133 bool result,
127 std::vector<std::unique_ptr<SavePageRequest>> requests) { 134 std::vector<std::unique_ptr<SavePageRequest>> requests) {
128 last_result_ = result ? LastResult::kTrue : LastResult::kFalse; 135 last_result_ = result ? LastResult::kTrue : LastResult::kFalse;
129 last_requests_ = std::move(requests); 136 last_requests_ = std::move(requests);
130 } 137 }
131 138
132 void RequestQueueStoreTestBase::AddOrUpdateDone(UpdateStatus status) { 139 void RequestQueueStoreTestBase::AddOrUpdateDone(UpdateStatus status) {
133 last_update_status_ = status; 140 last_update_status_ = status;
134 } 141 }
135 142
136 void RequestQueueStoreTestBase::AddRequestDone(ItemActionStatus status) { 143 void RequestQueueStoreTestBase::AddRequestDone(ItemActionStatus status) {
137 last_add_status_ = status; 144 last_add_status_ = status;
138 } 145 }
139 146
147 void RequestQueueStoreTestBase::UpdateRequestDone(
148 std::unique_ptr<UpdateRequestsResult> result) {
149 last_update_result_ = std::move(result);
150 }
151
140 void RequestQueueStoreTestBase::UpdateMultipleRequestsDone( 152 void RequestQueueStoreTestBase::UpdateMultipleRequestsDone(
141 const RequestQueue::UpdateMultipleRequestResults& results, 153 const RequestQueue::UpdateMultipleRequestResults& results,
142 std::vector<std::unique_ptr<SavePageRequest>> requests) { 154 std::vector<std::unique_ptr<SavePageRequest>> requests) {
143 last_multiple_update_results_ = results; 155 last_multiple_update_results_ = results;
144 last_requests_ = std::move(requests); 156 last_requests_ = std::move(requests);
Pete Williamson 2016/09/22 00:12:50 Let's remove UpdateMultipleRequestsDone - The idea
fgorski 2016/09/22 15:47:53 Acknowledged. Separate patch.
145 } 157 }
146 158
147 void RequestQueueStoreTestBase::RemoveDone( 159 void RequestQueueStoreTestBase::RemoveDone(
148 const RequestQueue::UpdateMultipleRequestResults& results, 160 const RequestQueue::UpdateMultipleRequestResults& results,
149 std::vector<std::unique_ptr<SavePageRequest>> requests) { 161 std::vector<std::unique_ptr<SavePageRequest>> requests) {
150 last_remove_results_ = results; 162 last_remove_results_ = results;
151 last_requests_ = std::move(requests); 163 last_requests_ = std::move(requests);
152 } 164 }
153 165
154 void RequestQueueStoreTestBase::ResetDone(bool result) { 166 void RequestQueueStoreTestBase::ResetDone(bool result) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 // Check that there is still only one item in the store. 264 // Check that there is still only one item in the store.
253 this->ClearResults(); 265 this->ClearResults();
254 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 266 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
255 base::Unretained(this))); 267 base::Unretained(this)));
256 ASSERT_EQ(LastResult::kNone, this->last_result()); 268 ASSERT_EQ(LastResult::kNone, this->last_result());
257 this->PumpLoop(); 269 this->PumpLoop();
258 ASSERT_EQ(LastResult::kTrue, this->last_result()); 270 ASSERT_EQ(LastResult::kTrue, this->last_result());
259 ASSERT_EQ(1ul, this->last_requests().size()); 271 ASSERT_EQ(1ul, this->last_requests().size());
260 } 272 }
261 273
262 TYPED_TEST(RequestQueueStoreTest, UpdateRequest) { 274 TYPED_TEST(RequestQueueStoreTest, UpdateRequest) {
Pete Williamson 2016/09/22 00:12:50 This test only tests a single request at a time, w
fgorski 2016/09/22 15:47:53 Done. Updated to run both tests in one call to Upd
263 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); 275 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
264 base::Time creation_time = base::Time::Now(); 276 base::Time creation_time = base::Time::Now();
265 SavePageRequest original_request( 277 SavePageRequest original_request(
266 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 278 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
267 store->AddRequest(original_request, 279 store->AddRequest(original_request,
268 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, 280 base::Bind(&RequestQueueStoreTestBase::AddRequestDone,
269 base::Unretained(this))); 281 base::Unretained(this)));
270 this->PumpLoop(); 282 this->PumpLoop();
271 this->ClearResults(); 283 this->ClearResults();
272 284
273 base::Time new_creation_time = 285 base::Time new_creation_time =
274 creation_time + base::TimeDelta::FromMinutes(1); 286 creation_time + base::TimeDelta::FromMinutes(1);
275 base::Time activation_time = creation_time + base::TimeDelta::FromHours(6); 287 base::Time activation_time = creation_time + base::TimeDelta::FromHours(6);
276 SavePageRequest updated_request(kRequestId, kUrl, kClientId, 288 SavePageRequest updated_request(kRequestId, kUrl, kClientId,
277 new_creation_time, activation_time, 289 new_creation_time, activation_time,
278 kUserRequested); 290 kUserRequested);
279 store->AddOrUpdateRequest( 291 std::vector<SavePageRequest> requests_to_update{updated_request};
280 updated_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, 292 store->UpdateRequests(
281 base::Unretained(this))); 293 requests_to_update,
282 ASSERT_EQ(UpdateStatus::FAILED, this->last_update_status()); 294 base::Bind(&RequestQueueStoreTestBase::UpdateRequestDone,
295 base::Unretained(this)));
296 ASSERT_FALSE(this->last_update_result());
283 this->PumpLoop(); 297 this->PumpLoop();
284 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); 298 ASSERT_TRUE(this->last_update_result());
299 EXPECT_EQ(1UL, this->last_update_result()->item_statuses.size());
300 EXPECT_EQ(kRequestId,
301 this->last_update_result()->item_statuses.begin()->first);
302 EXPECT_EQ(ItemActionStatus::SUCCESS,
303 this->last_update_result()->item_statuses.begin()->second);
304 EXPECT_EQ(1UL, this->last_update_result()->updated_items.size());
305 EXPECT_EQ(updated_request,
306 *(this->last_update_result()->updated_items.begin()));
285 307
286 // Verifying get reqeust results after a request was updated. 308 // Verifying get reqeust results after a request was updated.
287 this->ClearResults(); 309 this->ClearResults();
288 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 310 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
289 base::Unretained(this))); 311 base::Unretained(this)));
290 ASSERT_EQ(LastResult::kNone, this->last_result()); 312 ASSERT_EQ(LastResult::kNone, this->last_result());
291 this->PumpLoop(); 313 this->PumpLoop();
292 ASSERT_EQ(LastResult::kTrue, this->last_result()); 314 ASSERT_EQ(LastResult::kTrue, this->last_result());
293 ASSERT_EQ(1ul, this->last_requests().size()); 315 ASSERT_EQ(1ul, this->last_requests().size());
294 ASSERT_EQ(updated_request, *(this->last_requests()[0].get())); 316 ASSERT_EQ(updated_request, *(this->last_requests()[0].get()));
317
318 this->ClearResults();
Pete Williamson 2016/09/22 00:12:50 This section is a nice addition to the test, thank
fgorski 2016/09/22 15:47:53 Acknowledged.
319 // Try to update a non-existing request.
320 SavePageRequest updated_request2(kRequestId2, kUrl, kClientId,
321 new_creation_time, activation_time,
322 kUserRequested);
323 requests_to_update.clear();
324 requests_to_update.push_back(updated_request2);
325 store->UpdateRequests(
326 requests_to_update,
327 base::Bind(&RequestQueueStoreTestBase::UpdateRequestDone,
328 base::Unretained(this)));
329 this->PumpLoop();
330 ASSERT_TRUE(this->last_update_result());
331 EXPECT_EQ(1UL, this->last_update_result()->item_statuses.size());
332 EXPECT_EQ(kRequestId2,
333 this->last_update_result()->item_statuses.begin()->first);
334 EXPECT_EQ(ItemActionStatus::NOT_FOUND,
335 this->last_update_result()->item_statuses.begin()->second);
336 EXPECT_EQ(0UL, this->last_update_result()->updated_items.size());
295 } 337 }
296 338
297 TYPED_TEST(RequestQueueStoreTest, RemoveRequests) { 339 TYPED_TEST(RequestQueueStoreTest, RemoveRequests) {
298 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); 340 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
299 base::Time creation_time = base::Time::Now(); 341 base::Time creation_time = base::Time::Now();
300 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time, 342 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
301 kUserRequested); 343 kUserRequested);
302 store->AddRequest(request1, 344 store->AddRequest(request1,
303 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, 345 base::Bind(&RequestQueueStoreTestBase::AddRequestDone,
304 base::Unretained(this))); 346 base::Unretained(this)));
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 507 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
466 base::Unretained(this))); 508 base::Unretained(this)));
467 ASSERT_EQ(LastResult::kNone, this->last_result()); 509 ASSERT_EQ(LastResult::kNone, this->last_result());
468 this->PumpLoop(); 510 this->PumpLoop();
469 ASSERT_EQ(LastResult::kTrue, this->last_result()); 511 ASSERT_EQ(LastResult::kTrue, this->last_result());
470 ASSERT_EQ(1ul, this->last_requests().size()); 512 ASSERT_EQ(1ul, this->last_requests().size());
471 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get())); 513 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get()));
472 } 514 }
473 515
474 } // offline_pages 516 } // offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698