Chromium Code Reviews| Index: components/offline_pages/background/request_coordinator_unittest.cc |
| diff --git a/components/offline_pages/background/request_coordinator_unittest.cc b/components/offline_pages/background/request_coordinator_unittest.cc |
| index cddb5ff2aa0a100a2f5900a960ee3b47015f2f92..e8415a4e21d9980345db987854d7d0f063084b8f 100644 |
| --- a/components/offline_pages/background/request_coordinator_unittest.cc |
| +++ b/components/offline_pages/background/request_coordinator_unittest.cc |
| @@ -8,8 +8,12 @@ |
| #include <utility> |
| #include "base/bind.h" |
| +#include "base/test/test_simple_task_runner.h" |
| +#include "base/thread_task_runner_handle.h" |
| #include "components/offline_pages/background/offliner_factory.h" |
| #include "components/offline_pages/background/offliner_policy.h" |
| +#include "components/offline_pages/background/request_queue.h" |
| +#include "components/offline_pages/background/request_queue_in_memory_store.h" |
| #include "components/offline_pages/background/save_page_request.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -27,30 +31,90 @@ class RequestCoordinatorTest |
| RequestCoordinatorTest(); |
| ~RequestCoordinatorTest() override; |
| - void CallbackFunction() { |
| + void PumpLoop(); |
| + |
| + // Empty callback function |
| + void EmptyCallbackFunction() { |
| } |
| + |
| + // Callback for getting requests. |
| + void GetRequestsDone(RequestQueue::GetRequestsResult result, |
| + const std::vector<SavePageRequest>& requests); |
| + |
| + RequestQueue::GetRequestsResult last_get_requests_result() const { |
| + return last_get_requests_result_; |
| + } |
| + |
| + const std::vector<SavePageRequest>& last_requests() const { |
| + return last_requests_; |
| + } |
| + |
| + private: |
| + RequestQueue::GetRequestsResult last_get_requests_result_; |
| + std::vector<SavePageRequest> last_requests_; |
| + scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
| + base::ThreadTaskRunnerHandle task_runner_handle_; |
| }; |
| -RequestCoordinatorTest::RequestCoordinatorTest() {} |
| +RequestCoordinatorTest::RequestCoordinatorTest() |
| + : last_get_requests_result_(RequestQueue::GetRequestsResult::kStoreFailure), |
| + task_runner_(new base::TestSimpleTaskRunner), |
| + task_runner_handle_(task_runner_) {} |
| RequestCoordinatorTest::~RequestCoordinatorTest() {} |
| + |
| +void RequestCoordinatorTest::PumpLoop() { |
| + task_runner_->RunUntilIdle(); |
| +} |
| + |
| +void RequestCoordinatorTest::GetRequestsDone( |
| + RequestQueue::GetRequestsResult result, |
|
fgorski
2016/05/10 21:18:12
nit: align properly
Pete Williamson
2016/05/10 22:51:57
Done.
|
| + const std::vector<SavePageRequest>& requests) { |
| + last_get_requests_result_ = result; |
| + last_requests_ = requests; |
| +} |
| + |
| + |
| TEST_F(RequestCoordinatorTest, StartProcessingWithNoRequests) { |
| RequestCoordinator::ProcessingDoneCallback callback = |
|
fgorski
2016/05/10 21:18:12
now that 84-90 block has grown, and regardless wha
Pete Williamson
2016/05/10 22:51:57
Done.
|
| base::Bind( |
| - &RequestCoordinatorTest::CallbackFunction, |
| + &RequestCoordinatorTest::EmptyCallbackFunction, |
| base::Unretained(this)); |
| std::unique_ptr<OfflinerPolicy> policy(new OfflinerPolicy()); |
| std::unique_ptr<OfflinerFactory> factory; |
| - RequestCoordinator coordinator(std::move(policy), std::move(factory)); |
| + std::unique_ptr<RequestQueueInMemoryStore> |
| + store(new RequestQueueInMemoryStore()); |
| + std::unique_ptr<RequestQueue> queue(new RequestQueue(std::move(store))); |
| + RequestCoordinator coordinator( |
| + std::move(policy), std::move(factory), std::move(queue)); |
| EXPECT_FALSE(coordinator.StartProcessing(callback)); |
| } |
| TEST_F(RequestCoordinatorTest, SavePageLater) { |
| std::unique_ptr<OfflinerPolicy> policy(new OfflinerPolicy()); |
| std::unique_ptr<OfflinerFactory> factory; |
| - RequestCoordinator coordinator(std::move(policy), std::move(factory)); |
| + std::unique_ptr<RequestQueueInMemoryStore> |
| + store(new RequestQueueInMemoryStore()); |
| + std::unique_ptr<RequestQueue> queue(new RequestQueue(std::move(store))); |
| + RequestCoordinator coordinator( |
| + std::move(policy), std::move(factory), std::move(queue)); |
|
fgorski
2016/05/10 21:18:12
I know this code only shows up twice 84-90 and 95-
Pete Williamson
2016/05/10 22:51:57
Done.
|
| EXPECT_TRUE(coordinator.SavePageLater(kUrl, kClientId)); |
| + |
| + // Expect that a request got placed on the queue. |
| + coordinator.GetQueue()->GetRequests( |
| + base::Bind(&RequestCoordinatorTest::GetRequestsDone, |
| + base::Unretained(this))); |
| + |
| + // Wait for callback to finish. |
| + PumpLoop(); |
| + |
| + // Check the results are as expected. |
| + EXPECT_EQ(1U, last_requests().size()); |
|
fgorski
2016/05/10 21:18:12
1UL?
Pete Williamson
2016/05/10 22:51:57
Done.
|
| + EXPECT_EQ(kUrl, last_requests()[0].url()); |
| + EXPECT_EQ(kClientId, last_requests()[0].client_id()); |
| + |
| + // TODO(petewil): Expect that the scheduler got notified. |
| } |
| } // namespace offline_pages |