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..e8f4e3bd0ab3a7b6c57102d81a65dcc39ffeb247 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,93 @@ class RequestCoordinatorTest |
| RequestCoordinatorTest(); |
| ~RequestCoordinatorTest() override; |
| - void CallbackFunction() { |
| + void SetUp() override; |
| + |
| + void PumpLoop(); |
| + |
| + RequestCoordinator* getCoordinator() { |
| + return coordinator_.get(); |
| + } |
| + |
| + // 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_; |
| + std::unique_ptr<RequestCoordinator> coordinator_; |
| }; |
| -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::SetUp() { |
| + std::unique_ptr<OfflinerPolicy> policy(new OfflinerPolicy()); |
| + std::unique_ptr<OfflinerFactory> factory; |
| + std::unique_ptr<RequestQueueInMemoryStore> |
| + store(new RequestQueueInMemoryStore()); |
| + std::unique_ptr<RequestQueue> queue(new RequestQueue(std::move(store))); |
| + coordinator_.reset(new RequestCoordinator( |
| + std::move(policy), std::move(factory), std::move(queue))); |
| +} |
| + |
|
fgorski
2016/05/11 19:45:15
nit: remove extra empty line
Pete Williamson
2016/05/11 22:13:03
Done.
|
| + |
| +void RequestCoordinatorTest::PumpLoop() { |
| + task_runner_->RunUntilIdle(); |
| +} |
| + |
| +void RequestCoordinatorTest::GetRequestsDone( |
| + RequestQueue::GetRequestsResult result, |
| + const std::vector<SavePageRequest>& requests) { |
| + last_get_requests_result_ = result; |
| + last_requests_ = requests; |
| +} |
| + |
| + |
| TEST_F(RequestCoordinatorTest, StartProcessingWithNoRequests) { |
| RequestCoordinator::ProcessingDoneCallback callback = |
| 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)); |
| - EXPECT_FALSE(coordinator.StartProcessing(callback)); |
| + EXPECT_FALSE(getCoordinator()->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)); |
| - EXPECT_TRUE(coordinator.SavePageLater(kUrl, kClientId)); |
| + EXPECT_TRUE(getCoordinator()->SavePageLater(kUrl, kClientId)); |
| + |
| + // Expect that a request got placed on the queue. |
| + getCoordinator()->GetQueue()->GetRequests( |
| + base::Bind(&RequestCoordinatorTest::GetRequestsDone, |
| + base::Unretained(this))); |
| + |
| + // Wait for callback to finish. |
| + PumpLoop(); |
| + |
| + // Check the results are as expected. |
| + EXPECT_EQ(1UL, last_requests().size()); |
| + 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 |