Chromium Code Reviews| Index: chrome/browser/download/download_commands_unittest.cc |
| diff --git a/chrome/browser/download/download_commands_unittest.cc b/chrome/browser/download/download_commands_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4e67c4e5a8948eb3cec80028735a9740082020fa |
| --- /dev/null |
| +++ b/chrome/browser/download/download_commands_unittest.cc |
| @@ -0,0 +1,156 @@ |
| +// Copyright 2015 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 "chrome/browser/download/download_commands.h" |
| + |
| +#include <vector> |
| + |
| +#include "content/public/test/mock_download_item.h" |
| +#include "testing/gmock/include/gmock/gmock.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +using content::DownloadItem; |
| +using ::testing::Mock; |
| +using ::testing::NiceMock; |
| +using ::testing::Return; |
| +using ::testing::ReturnRefOfCopy; |
| +using ::testing::_; |
| + |
| +namespace { |
| + |
| +// Default URL for a mock download item in DownloadCommandsTest. |
| +const char kDefaultURL[] = "http://example.com/foo.bar"; |
| + |
| +class DownloadCommandsTest : public testing::Test { |
| + public: |
| + DownloadCommandsTest() : commands_(&item_) {} |
| + |
| + virtual ~DownloadCommandsTest() { |
| + } |
| + |
| + protected: |
| + // Sets up defaults for the download item. |
| + void SetupDownloadItemDefaults() { |
| + ON_CALL(item_, GetMimeType()).WillByDefault(Return("text/html")); |
| + ON_CALL(item_, CanShowInFolder()).WillByDefault(Return(true)); |
| + ON_CALL(item_, CanOpenDownload()).WillByDefault(Return(true)); |
| + ON_CALL(item_, IsDone()).WillByDefault(Return(false)); |
| + ON_CALL(item_, GetOpenWhenComplete()).WillByDefault(Return(false)); |
| + ON_CALL(item_, GetState()) |
| + .WillByDefault(Return(DownloadItem::IN_PROGRESS)); |
| + ON_CALL(item_, IsPaused()).WillByDefault(Return(false)); |
| + |
| + ON_CALL(item_, GetTargetDisposition()) |
| + .WillByDefault( |
| + Return(DownloadItem::TARGET_DISPOSITION_OVERWRITE)); |
| + ON_CALL(item_, GetMimeType()).WillByDefault(Return("text/html")); |
| + ON_CALL(item_, GetURL()) |
| + .WillByDefault(ReturnRefOfCopy(GURL(kDefaultURL))); |
| + } |
| + |
| + content::MockDownloadItem& item() { |
| + return item_; |
| + } |
| + |
| + bool IsCommandEnabled(DownloadCommands::Command command) { |
| + return commands().IsCommandEnabled(command); |
| + } |
| + |
| + bool IsCommandChecked(DownloadCommands::Command command) { |
| + return commands().IsCommandChecked(command); |
| + } |
| + |
| + |
| + DownloadCommands& commands() { |
| + return commands_; |
| + } |
| + |
| + private: |
| + NiceMock<content::MockDownloadItem> item_; |
| + DownloadCommands commands_; |
| +}; |
| + |
| +} // namespace |
| + |
| +TEST_F(DownloadCommandsTest, StartAndFinish) { |
| + SetupDownloadItemDefaults(); |
|
asanka
2015/03/09 19:02:20
Add a SetUp() function to DownloadCommandsTest and
|
| + |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::SHOW_IN_FOLDER)); |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::CANCEL)); |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::PAUSE)); |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::OPEN_WHEN_COMPLETE)); |
| + |
| + EXPECT_FALSE(IsCommandChecked(DownloadCommands::OPEN_WHEN_COMPLETE)); |
| + |
| + // Open when complete. |
| + EXPECT_CALL(item(), OpenDownload()).Times(1); |
| + commands().ExecuteCommand(DownloadCommands::OPEN_WHEN_COMPLETE); |
| + ON_CALL(item(), GetOpenWhenComplete()).WillByDefault(Return(true)); |
| + |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::OPEN_WHEN_COMPLETE)); |
| + EXPECT_TRUE(IsCommandChecked(DownloadCommands::OPEN_WHEN_COMPLETE)); |
| + |
| + // Finish a download. |
| + ON_CALL(item(), IsDone()).WillByDefault(Return(true)); |
| + |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::CANCEL)); |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::PAUSE)); |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); |
| +} |
| + |
| +TEST_F(DownloadCommandsTest, Cancel) { |
| + SetupDownloadItemDefaults(); |
| + |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::CANCEL)); |
| + |
| + // Cancel. |
| + EXPECT_CALL(item(), Cancel(true)).Times(1); |
| + commands().ExecuteCommand(DownloadCommands::CANCEL); |
| + ON_CALL(item(), IsDone()).WillByDefault(Return(true)); |
| + |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::CANCEL)); |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::PAUSE)); |
| +} |
| + |
| +TEST_F(DownloadCommandsTest, PauseAndResume) { |
| + SetupDownloadItemDefaults(); |
| + |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::PAUSE)); |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); |
| + |
| + // Pause. |
| + EXPECT_CALL(item(), Pause()).Times(1); |
| + commands().ExecuteCommand(DownloadCommands::PAUSE); |
| + ON_CALL(item(), IsPaused()).WillByDefault(Return(true)); |
| + ON_CALL(item(), CanResume()).WillByDefault(Return(true)); |
| + |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::PAUSE)); |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::RESUME)); |
| + |
| + // Resume. |
| + EXPECT_CALL(item(), Resume()).Times(1); |
| + commands().ExecuteCommand(DownloadCommands::RESUME); |
| + ON_CALL(item(), IsPaused()).WillByDefault(Return(false)); |
| + |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::PAUSE)); |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); |
| +} |
| + |
| +TEST_F(DownloadCommandsTest, UnableToResume) { |
| + SetupDownloadItemDefaults(); |
| + |
| + EXPECT_TRUE(IsCommandEnabled(DownloadCommands::PAUSE)); |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); |
| + |
| + // Pause. |
| + EXPECT_CALL(item(), Pause()).Times(1); |
| + commands().ExecuteCommand(DownloadCommands::PAUSE); |
| + ON_CALL(item(), IsPaused()).WillByDefault(Return(true)); |
| + ON_CALL(item(), CanResume()).WillByDefault(Return(false)); |
| + |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::PAUSE)); |
| + EXPECT_FALSE(IsCommandEnabled(DownloadCommands::RESUME)); |
| +} |