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

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: update Created 4 years, 1 month 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 AddStartedItemToStore(RequestQueueStore* store);
32
33 void AddRequestDone(ItemActionStatus status);
34
35 void ChangeRequestsStateCallback(
36 std::unique_ptr<UpdateRequestsResult> result);
37
38 UpdateRequestsResult* last_result() const { return result_.get(); }
39
40 private:
41 std::unique_ptr<UpdateRequestsResult> result_;
42 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
43 base::ThreadTaskRunnerHandle task_runner_handle_;
44 };
45
46 MarkAttemptCompletedTaskTest::MarkAttemptCompletedTaskTest()
47 : task_runner_(new base::TestSimpleTaskRunner),
48 task_runner_handle_(task_runner_) {}
49
50 MarkAttemptCompletedTaskTest::~MarkAttemptCompletedTaskTest() {}
51
52 void MarkAttemptCompletedTaskTest::PumpLoop() {
53 task_runner_->RunUntilIdle();
54 }
55
56 void MarkAttemptCompletedTaskTest::AddStartedItemToStore(
57 RequestQueueStore* store) {
58 base::Time creation_time = base::Time::Now();
59 SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
60 true);
61 request_1.MarkAttemptStarted(base::Time::Now());
62 store->AddRequest(request_1,
63 base::Bind(&MarkAttemptCompletedTaskTest::AddRequestDone,
64 base::Unretained(this)));
65 PumpLoop();
66 }
67
68 void MarkAttemptCompletedTaskTest::AddRequestDone(ItemActionStatus status) {
69 ASSERT_EQ(ItemActionStatus::SUCCESS, status);
70 }
71
72 void MarkAttemptCompletedTaskTest::ChangeRequestsStateCallback(
73 std::unique_ptr<UpdateRequestsResult> result) {
74 result_ = std::move(result);
75 }
76
77 TEST_F(MarkAttemptCompletedTaskTest, MarkAttemptCompletedWhenExists) {
78 RequestQueueInMemoryStore store;
79 AddStartedItemToStore(&store);
80
81 MarkAttemptCompletedTask task(
82 &store, kRequestId1,
83 base::Bind(&MarkAttemptCompletedTaskTest::ChangeRequestsStateCallback,
84 base::Unretained(this)));
85
86 task.Run();
87 PumpLoop();
88 ASSERT_TRUE(last_result());
89 EXPECT_EQ(1UL, last_result()->item_statuses.size());
90 EXPECT_EQ(kRequestId1, last_result()->item_statuses.at(0).first);
91 EXPECT_EQ(ItemActionStatus::SUCCESS,
92 last_result()->item_statuses.at(0).second);
93 EXPECT_EQ(1UL, last_result()->updated_items.size());
94 EXPECT_EQ(1, last_result()->updated_items.at(0).completed_attempt_count());
95 EXPECT_EQ(SavePageRequest::RequestState::AVAILABLE,
96 last_result()->updated_items.at(0).request_state());
97 }
98
99 TEST_F(MarkAttemptCompletedTaskTest, MarkAttemptCompletedWhenItemMissing) {
100 RequestQueueInMemoryStore store;
101 // Add request 1 to the store.
102 AddStartedItemToStore(&store);
103 // Try to mark request 2 (not in the store).
104 MarkAttemptCompletedTask task(
105 &store, kRequestId2,
106 base::Bind(&MarkAttemptCompletedTaskTest::ChangeRequestsStateCallback,
107 base::Unretained(this)));
108 task.Run();
109 PumpLoop();
110 ASSERT_TRUE(last_result());
111 EXPECT_EQ(1UL, last_result()->item_statuses.size());
112 EXPECT_EQ(kRequestId2, last_result()->item_statuses.at(0).first);
113 EXPECT_EQ(ItemActionStatus::NOT_FOUND,
114 last_result()->item_statuses.at(0).second);
115 EXPECT_EQ(0UL, last_result()->updated_items.size());
116 }
117
118 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698