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

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: Updating test, adding handling for store/transaction failures. 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
« no previous file with comments | « components/offline_pages/background/request_queue_store_sql.cc ('k') | 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/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);
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) {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
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);
288 // Try updating an existing request.
276 SavePageRequest updated_request(kRequestId, kUrl, kClientId, 289 SavePageRequest updated_request(kRequestId, kUrl, kClientId,
277 new_creation_time, activation_time, 290 new_creation_time, activation_time,
278 kUserRequested); 291 kUserRequested);
279 store->AddOrUpdateRequest( 292 // Try to update a non-existing request.
280 updated_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, 293 SavePageRequest updated_request2(kRequestId2, kUrl, kClientId,
281 base::Unretained(this))); 294 new_creation_time, activation_time,
282 ASSERT_EQ(UpdateStatus::FAILED, this->last_update_status()); 295 kUserRequested);
296 std::vector<SavePageRequest> requests_to_update{updated_request,
297 updated_request2};
298 store->UpdateRequests(
299 requests_to_update,
300 base::Bind(&RequestQueueStoreTestBase::UpdateRequestDone,
301 base::Unretained(this)));
302 ASSERT_FALSE(this->last_update_result());
283 this->PumpLoop(); 303 this->PumpLoop();
284 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); 304 ASSERT_TRUE(this->last_update_result());
305 EXPECT_EQ(2UL, this->last_update_result()->item_statuses.size());
306 EXPECT_EQ(kRequestId, this->last_update_result()->item_statuses[0].first);
307 EXPECT_EQ(ItemActionStatus::SUCCESS,
308 this->last_update_result()->item_statuses[0].second);
309 EXPECT_EQ(kRequestId2, this->last_update_result()->item_statuses[1].first);
310 EXPECT_EQ(ItemActionStatus::NOT_FOUND,
311 this->last_update_result()->item_statuses[1].second);
312 EXPECT_EQ(1UL, this->last_update_result()->updated_items.size());
313 EXPECT_EQ(updated_request,
314 *(this->last_update_result()->updated_items.begin()));
285 315
286 // Verifying get reqeust results after a request was updated. 316 // Verifying get reqeust results after a request was updated.
287 this->ClearResults(); 317 this->ClearResults();
288 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 318 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
289 base::Unretained(this))); 319 base::Unretained(this)));
290 ASSERT_EQ(LastResult::kNone, this->last_result()); 320 ASSERT_EQ(LastResult::kNone, this->last_result());
291 this->PumpLoop(); 321 this->PumpLoop();
292 ASSERT_EQ(LastResult::kTrue, this->last_result()); 322 ASSERT_EQ(LastResult::kTrue, this->last_result());
293 ASSERT_EQ(1ul, this->last_requests().size()); 323 ASSERT_EQ(1ul, this->last_requests().size());
294 ASSERT_EQ(updated_request, *(this->last_requests()[0].get())); 324 ASSERT_EQ(updated_request, *(this->last_requests()[0].get()));
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 495 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
466 base::Unretained(this))); 496 base::Unretained(this)));
467 ASSERT_EQ(LastResult::kNone, this->last_result()); 497 ASSERT_EQ(LastResult::kNone, this->last_result());
468 this->PumpLoop(); 498 this->PumpLoop();
469 ASSERT_EQ(LastResult::kTrue, this->last_result()); 499 ASSERT_EQ(LastResult::kTrue, this->last_result());
470 ASSERT_EQ(1ul, this->last_requests().size()); 500 ASSERT_EQ(1ul, this->last_requests().size());
471 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get())); 501 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get()));
472 } 502 }
473 503
474 } // offline_pages 504 } // offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/background/request_queue_store_sql.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698