blob: 579b8bca03dfd19c63e84b4b3f997d2294b444cd [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/offline_pages/background/save_page_request.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace offline_pages {
namespace {
const int64_t kRequestId = 42;
const GURL kUrl("http://example.com");
const ClientId kClientId("bookmark", "1234");
} // namespace
class SavePageRequestTest : public testing::Test {
public:
~SavePageRequestTest() override;
};
SavePageRequestTest::~SavePageRequestTest() {}
TEST_F(SavePageRequestTest, CreatePendingReqeust) {
base::Time creation_time = base::Time::Now();
SavePageRequest request(kRequestId, kUrl, kClientId, creation_time);
ASSERT_EQ(kRequestId, request.request_id());
ASSERT_EQ(kUrl, request.url());
ASSERT_EQ(kClientId, request.client_id());
ASSERT_EQ(creation_time, request.creation_time());
ASSERT_EQ(creation_time, request.activation_time());
ASSERT_EQ(base::Time(), request.last_attempt_time());
ASSERT_EQ(0, request.attempt_count());
base::Time after_creation = creation_time + base::TimeDelta::FromHours(6);
ASSERT_EQ(SavePageRequest::Status::kPending,
request.GetStatus(after_creation));
}
TEST_F(SavePageRequestTest, CreateNotReadyRequest) {
base::Time creation_time = base::Time::Now();
base::Time activation_time = creation_time + base::TimeDelta::FromHours(6);
SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
activation_time);
ASSERT_EQ(kRequestId, request.request_id());
ASSERT_EQ(kUrl, request.url());
ASSERT_EQ(kClientId, request.client_id());
ASSERT_EQ(creation_time, request.creation_time());
ASSERT_EQ(activation_time, request.activation_time());
ASSERT_EQ(base::Time(), request.last_attempt_time());
ASSERT_EQ(0, request.attempt_count());
base::Time not_ready_time = activation_time - base::TimeDelta::FromHours(3);
ASSERT_EQ(SavePageRequest::Status::kNotReady,
request.GetStatus(not_ready_time));
base::Time ready_time = activation_time + base::TimeDelta::FromHours(3);
ASSERT_EQ(SavePageRequest::Status::kPending, request.GetStatus(ready_time));
}
TEST_F(SavePageRequestTest, StartAndCompleteRequest) {
base::Time creation_time = base::Time::Now();
base::Time activation_time = creation_time + base::TimeDelta::FromHours(6);
SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
activation_time);
base::Time start_time = activation_time + base::TimeDelta::FromHours(3);
request.MarkAttemptStarted(start_time);
// Most things don't change about the request.
ASSERT_EQ(kRequestId, request.request_id());
ASSERT_EQ(kUrl, request.url());
ASSERT_EQ(kClientId, request.client_id());
ASSERT_EQ(creation_time, request.creation_time());
ASSERT_EQ(activation_time, request.activation_time());
// Attempt time, attempt count and status will though.
ASSERT_EQ(start_time, request.last_attempt_time());
ASSERT_EQ(1, request.attempt_count());
ASSERT_EQ(SavePageRequest::Status::kStarted, request.GetStatus(start_time));
request.MarkAttemptCompleted();
// Again, most things don't change about the request.
ASSERT_EQ(kRequestId, request.request_id());
ASSERT_EQ(kUrl, request.url());
ASSERT_EQ(kClientId, request.client_id());
ASSERT_EQ(creation_time, request.creation_time());
ASSERT_EQ(activation_time, request.activation_time());
// Last attempt time and status will. Attempt count also unchanged.
ASSERT_EQ(base::Time(), request.last_attempt_time());
ASSERT_EQ(1, request.attempt_count());
ASSERT_EQ(SavePageRequest::Status::kPending, request.GetStatus(start_time));
}
} // offline_pages