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

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

Issue 1947253002: [Offline pages] Implementation of RequestQueue: Add, Remove, Get (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updating the gyp file Created 4 years, 7 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.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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "components/offline_pages/background/request_queue.h"
6
7 #include <memory>
8
9 #include "base/bind.h"
10 #include "base/optional.h"
11 #include "base/test/test_simple_task_runner.h"
12 #include "base/thread_task_runner_handle.h"
13 #include "components/offline_pages/background/request_queue_in_memory_store.h"
14 #include "components/offline_pages/background/save_page_request.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16
17 namespace offline_pages {
18
19 using AddRequestResult = RequestQueue::AddRequestResult;
20 using GetRequestsResult = RequestQueue::GetRequestsResult;
21 using UpdateRequestResult = RequestQueue::UpdateRequestResult;
22
23 namespace {
24 const int64_t kRequestId = 42;
25 const GURL kUrl("http://example.com");
26 const ClientId kClientId("bookmark", "1234");
27 } // namespace
28
29 // TODO(fgorski): Add tests for store failures in add/remove/get.
30 class RequestQueueTest : public testing::Test {
31 public:
32 RequestQueueTest();
33 ~RequestQueueTest() override;
34
35 // Test overrides.
36 void SetUp() override;
37
38 void PumpLoop();
39
40 // Callback for adding requests.
41 void AddRequestDone(AddRequestResult result, const SavePageRequest& request);
42 // Callback for getting requests.
43 void GetRequestsDone(GetRequestsResult result,
44 const std::vector<SavePageRequest>& requests);
45 // Callback for removing request.
46 void RemoveRequestDone(UpdateRequestResult result);
47
48 RequestQueue* queue() { return queue_.get(); }
49
50 AddRequestResult last_add_result() const { return last_add_result_; }
51 base::Optional<SavePageRequest>& last_added_request() {
52 return last_added_request_;
53 }
54
55 UpdateRequestResult last_remove_result() const { return last_remove_result_; }
56
57 GetRequestsResult last_get_requests_result() const {
58 return last_get_requests_result_;
59 }
60 const std::vector<SavePageRequest>& last_requests() const {
61 return last_requests_;
62 }
63
64 private:
65 AddRequestResult last_add_result_;
66 base::Optional<SavePageRequest> last_added_request_;
67
68 UpdateRequestResult last_remove_result_;
69
70 GetRequestsResult last_get_requests_result_;
71 std::vector<SavePageRequest> last_requests_;
72
73 std::unique_ptr<RequestQueue> queue_;
74 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
75 base::ThreadTaskRunnerHandle task_runner_handle_;
76 };
77
78 RequestQueueTest::RequestQueueTest()
79 : last_add_result_(AddRequestResult::kStoreFailure),
80 last_remove_result_(UpdateRequestResult::kStoreFailure),
81 last_get_requests_result_(GetRequestsResult::kStoreFailure),
82 task_runner_(new base::TestSimpleTaskRunner),
83 task_runner_handle_(task_runner_) {}
84
85 RequestQueueTest::~RequestQueueTest() {}
86
87 void RequestQueueTest::SetUp() {
88 std::unique_ptr<RequestQueueInMemoryStore> store(
89 new RequestQueueInMemoryStore());
90 queue_.reset(new RequestQueue(std::move(store)));
91 }
92
93 void RequestQueueTest::PumpLoop() {
94 task_runner_->RunUntilIdle();
95 }
96
97 void RequestQueueTest::AddRequestDone(AddRequestResult result,
98 const SavePageRequest& request) {
99 last_add_result_ = result;
100 last_added_request_ = request;
101 }
102
103 void RequestQueueTest::GetRequestsDone(
104 GetRequestsResult result,
105 const std::vector<SavePageRequest>& requests) {
106 last_get_requests_result_ = result;
107 last_requests_ = requests;
108 }
109
110 void RequestQueueTest::RemoveRequestDone(UpdateRequestResult result) {
111 last_remove_result_ = result;
112 }
113
114 TEST_F(RequestQueueTest, GetRequestsEmpty) {
115 queue()->GetRequests(
116 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
117 PumpLoop();
118 ASSERT_EQ(GetRequestsResult::kSuccess, last_get_requests_result());
119 ASSERT_EQ(0ul, last_requests().size());
120 }
121
122 TEST_F(RequestQueueTest, AddRequest) {
123 base::Time creation_time = base::Time::Now();
124 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time);
125 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
126 base::Unretained(this)));
127 PumpLoop();
128 ASSERT_EQ(AddRequestResult::kSuccess, last_add_result());
129 ASSERT_TRUE(last_added_request());
130 ASSERT_EQ(kRequestId, last_added_request()->request_id());
131
132 queue()->GetRequests(
133 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
134 PumpLoop();
135 ASSERT_EQ(GetRequestsResult::kSuccess, last_get_requests_result());
136 ASSERT_EQ(1ul, last_requests().size());
137 }
138
Pete Williamson 2016/05/04 23:10:50 Can we add a test case with several results in the
fgorski 2016/05/05 16:51:52 Done.
139 TEST_F(RequestQueueTest, RemoveRequest) {
140 base::Time creation_time = base::Time::Now();
141 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time);
142 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
143 base::Unretained(this)));
144 PumpLoop();
145 ASSERT_EQ(AddRequestResult::kSuccess, last_add_result());
146 ASSERT_TRUE(last_added_request());
147 ASSERT_EQ(kRequestId, last_added_request()->request_id());
148
149 queue()->RemoveRequest(
150 kRequestId,
151 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this)));
152 PumpLoop();
153 ASSERT_EQ(UpdateRequestResult::kSuccess, last_remove_result());
154
155 queue()->GetRequests(
156 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
157 PumpLoop();
158 ASSERT_EQ(GetRequestsResult::kSuccess, last_get_requests_result());
159 ASSERT_EQ(0ul, last_requests().size());
160 }
161
Pete Williamson 2016/05/04 23:10:50 It would be nice to have a test with three element
fgorski 2016/05/05 16:51:52 Done. I went with one test with 2 elements.
162 } // namespace offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/background/request_queue.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698