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)); |
+} |