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

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

Issue 2489443002: Move all components/offline_pages/ files into component/offline_pages/core (Closed)
Patch Set: rebase Created 4 years 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
(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/mark_attempt_aborted_task.h"
6
7 #include <memory>
8
9 #include "base/bind.h"
10 #include "base/test/test_simple_task_runner.h"
11 #include "base/threading/thread_task_runner_handle.h"
12 #include "components/offline_pages/background/mark_attempt_started_task.h"
13 #include "components/offline_pages/background/request_queue_in_memory_store.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 namespace offline_pages {
17 namespace {
18 const int64_t kRequestId1 = 42;
19 const int64_t kRequestId2 = 44;
20 const GURL kUrl1("http://example.com");
21 const ClientId kClientId1("download", "1234");
22 } // namespace
23
24 class MarkAttemptAbortedTaskTest : public testing::Test {
25 public:
26 MarkAttemptAbortedTaskTest();
27 ~MarkAttemptAbortedTaskTest() override;
28
29 void PumpLoop();
30
31 void InitializeStore(RequestQueueStore* store);
32 void AddItemToStore(RequestQueueStore* store);
33 void ChangeRequestsStateCallback(
34 std::unique_ptr<UpdateRequestsResult> result);
35
36 void ClearResults();
37
38 UpdateRequestsResult* last_result() const { return result_.get(); }
39
40 private:
41 void InitializeStoreDone(bool success);
42 void AddRequestDone(ItemActionStatus status);
43
44 std::unique_ptr<UpdateRequestsResult> result_;
45 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
46 base::ThreadTaskRunnerHandle task_runner_handle_;
47 };
48
49 MarkAttemptAbortedTaskTest::MarkAttemptAbortedTaskTest()
50 : task_runner_(new base::TestSimpleTaskRunner),
51 task_runner_handle_(task_runner_) {}
52
53 MarkAttemptAbortedTaskTest::~MarkAttemptAbortedTaskTest() {}
54
55 void MarkAttemptAbortedTaskTest::PumpLoop() {
56 task_runner_->RunUntilIdle();
57 }
58
59 void MarkAttemptAbortedTaskTest::InitializeStore(RequestQueueStore* store) {
60 store->Initialize(base::Bind(&MarkAttemptAbortedTaskTest::InitializeStoreDone,
61 base::Unretained(this)));
62 PumpLoop();
63 }
64
65 void MarkAttemptAbortedTaskTest::AddItemToStore(RequestQueueStore* store) {
66 base::Time creation_time = base::Time::Now();
67 SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
68 true);
69 store->AddRequest(request_1,
70 base::Bind(&MarkAttemptAbortedTaskTest::AddRequestDone,
71 base::Unretained(this)));
72 PumpLoop();
73 }
74
75 void MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback(
76 std::unique_ptr<UpdateRequestsResult> result) {
77 result_ = std::move(result);
78 }
79
80 void MarkAttemptAbortedTaskTest::ClearResults() {
81 result_.reset(nullptr);
82 }
83
84 void MarkAttemptAbortedTaskTest::InitializeStoreDone(bool success) {
85 ASSERT_TRUE(success);
86 }
87
88 void MarkAttemptAbortedTaskTest::AddRequestDone(ItemActionStatus status) {
89 ASSERT_EQ(ItemActionStatus::SUCCESS, status);
90 }
91
92 TEST_F(MarkAttemptAbortedTaskTest, MarkAttemptAbortedWhenStoreEmpty) {
93 RequestQueueInMemoryStore store;
94 InitializeStore(&store);
95
96 MarkAttemptAbortedTask task(
97 &store, kRequestId1,
98 base::Bind(&MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback,
99 base::Unretained(this)));
100 task.Run();
101 PumpLoop();
102 ASSERT_TRUE(last_result());
103 EXPECT_EQ(1UL, last_result()->item_statuses.size());
104 EXPECT_EQ(kRequestId1, last_result()->item_statuses.at(0).first);
105 EXPECT_EQ(ItemActionStatus::NOT_FOUND,
106 last_result()->item_statuses.at(0).second);
107 EXPECT_EQ(0UL, last_result()->updated_items.size());
108 }
109
110 TEST_F(MarkAttemptAbortedTaskTest, MarkAttemptAbortedWhenExists) {
111 RequestQueueInMemoryStore store;
112 InitializeStore(&store);
113 AddItemToStore(&store);
114
115 // First mark attempt started.
116 MarkAttemptStartedTask start_request_task(
117 &store, kRequestId1,
118 base::Bind(&MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback,
119 base::Unretained(this)));
120 start_request_task.Run();
121 PumpLoop();
122 ClearResults();
123
124 MarkAttemptAbortedTask task(
125 &store, kRequestId1,
126 base::Bind(&MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback,
127 base::Unretained(this)));
128
129 task.Run();
130 PumpLoop();
131 ASSERT_TRUE(last_result());
132 EXPECT_EQ(1UL, last_result()->item_statuses.size());
133 EXPECT_EQ(kRequestId1, last_result()->item_statuses.at(0).first);
134 EXPECT_EQ(ItemActionStatus::SUCCESS,
135 last_result()->item_statuses.at(0).second);
136 EXPECT_EQ(1UL, last_result()->updated_items.size());
137 EXPECT_EQ(SavePageRequest::RequestState::AVAILABLE,
138 last_result()->updated_items.at(0).request_state());
139 }
140
141 TEST_F(MarkAttemptAbortedTaskTest, MarkAttemptAbortedWhenItemMissing) {
142 RequestQueueInMemoryStore store;
143 InitializeStore(&store);
144 AddItemToStore(&store);
145
146 MarkAttemptAbortedTask task(
147 &store, kRequestId2,
148 base::Bind(&MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback,
149 base::Unretained(this)));
150 task.Run();
151 PumpLoop();
152 ASSERT_TRUE(last_result());
153 EXPECT_EQ(1UL, last_result()->item_statuses.size());
154 EXPECT_EQ(kRequestId2, last_result()->item_statuses.at(0).first);
155 EXPECT_EQ(ItemActionStatus::NOT_FOUND,
156 last_result()->item_statuses.at(0).second);
157 EXPECT_EQ(0UL, last_result()->updated_items.size());
158 }
159
160 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698