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

Side by Side Diff: components/offline_pages/background/mark_attempt_completed_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_completed_task.h"
6
7 #include <memory>
8 #include <utility>
9
10 #include "base/bind.h"
11 #include "base/test/test_simple_task_runner.h"
12 #include "base/threading/thread_task_runner_handle.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 MarkAttemptCompletedTaskTest : public testing::Test {
25 public:
26 MarkAttemptCompletedTaskTest();
27 ~MarkAttemptCompletedTaskTest() override;
28
29 void PumpLoop();
30
31 void InitializeStore(RequestQueueStore* store);
32 void AddStartedItemToStore(RequestQueueStore* store);
33 void ChangeRequestsStateCallback(
34 std::unique_ptr<UpdateRequestsResult> result);
35
36 UpdateRequestsResult* last_result() const { return result_.get(); }
37
38 private:
39 void InitializeStoreDone(bool success);
40 void AddRequestDone(ItemActionStatus status);
41
42 std::unique_ptr<UpdateRequestsResult> result_;
43 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
44 base::ThreadTaskRunnerHandle task_runner_handle_;
45 };
46
47 MarkAttemptCompletedTaskTest::MarkAttemptCompletedTaskTest()
48 : task_runner_(new base::TestSimpleTaskRunner),
49 task_runner_handle_(task_runner_) {}
50
51 MarkAttemptCompletedTaskTest::~MarkAttemptCompletedTaskTest() {}
52
53 void MarkAttemptCompletedTaskTest::PumpLoop() {
54 task_runner_->RunUntilIdle();
55 }
56
57 void MarkAttemptCompletedTaskTest::InitializeStore(RequestQueueStore* store) {
58 store->Initialize(
59 base::Bind(&MarkAttemptCompletedTaskTest::InitializeStoreDone,
60 base::Unretained(this)));
61 PumpLoop();
62 }
63
64 void MarkAttemptCompletedTaskTest::AddStartedItemToStore(
65 RequestQueueStore* store) {
66 base::Time creation_time = base::Time::Now();
67 SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
68 true);
69 request_1.MarkAttemptStarted(base::Time::Now());
70 store->AddRequest(request_1,
71 base::Bind(&MarkAttemptCompletedTaskTest::AddRequestDone,
72 base::Unretained(this)));
73 PumpLoop();
74 }
75
76 void MarkAttemptCompletedTaskTest::ChangeRequestsStateCallback(
77 std::unique_ptr<UpdateRequestsResult> result) {
78 result_ = std::move(result);
79 }
80
81 void MarkAttemptCompletedTaskTest::InitializeStoreDone(bool success) {
82 ASSERT_TRUE(success);
83 }
84
85 void MarkAttemptCompletedTaskTest::AddRequestDone(ItemActionStatus status) {
86 ASSERT_EQ(ItemActionStatus::SUCCESS, status);
87 }
88
89 TEST_F(MarkAttemptCompletedTaskTest, MarkAttemptCompletedWhenExists) {
90 RequestQueueInMemoryStore store;
91 InitializeStore(&store);
92 AddStartedItemToStore(&store);
93
94 MarkAttemptCompletedTask task(
95 &store, kRequestId1,
96 base::Bind(&MarkAttemptCompletedTaskTest::ChangeRequestsStateCallback,
97 base::Unretained(this)));
98
99 task.Run();
100 PumpLoop();
101 ASSERT_TRUE(last_result());
102 EXPECT_EQ(1UL, last_result()->item_statuses.size());
103 EXPECT_EQ(kRequestId1, last_result()->item_statuses.at(0).first);
104 EXPECT_EQ(ItemActionStatus::SUCCESS,
105 last_result()->item_statuses.at(0).second);
106 EXPECT_EQ(1UL, last_result()->updated_items.size());
107 EXPECT_EQ(1, last_result()->updated_items.at(0).completed_attempt_count());
108 EXPECT_EQ(SavePageRequest::RequestState::AVAILABLE,
109 last_result()->updated_items.at(0).request_state());
110 }
111
112 TEST_F(MarkAttemptCompletedTaskTest, MarkAttemptCompletedWhenItemMissing) {
113 RequestQueueInMemoryStore store;
114 InitializeStore(&store);
115 // Add request 1 to the store.
116 AddStartedItemToStore(&store);
117 // Try to mark request 2 (not in the store).
118 MarkAttemptCompletedTask task(
119 &store, kRequestId2,
120 base::Bind(&MarkAttemptCompletedTaskTest::ChangeRequestsStateCallback,
121 base::Unretained(this)));
122 task.Run();
123 PumpLoop();
124 ASSERT_TRUE(last_result());
125 EXPECT_EQ(1UL, last_result()->item_statuses.size());
126 EXPECT_EQ(kRequestId2, last_result()->item_statuses.at(0).first);
127 EXPECT_EQ(ItemActionStatus::NOT_FOUND,
128 last_result()->item_statuses.at(0).second);
129 EXPECT_EQ(0UL, last_result()->updated_items.size());
130 }
131
132 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698