Chromium Code Reviews| Index: chrome/browser/ui/webui/help/version_updater_chromeos_unittest.cc |
| diff --git a/chrome/browser/ui/webui/help/version_updater_chromeos_unittest.cc b/chrome/browser/ui/webui/help/version_updater_chromeos_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..1e996eb42ca4ffee3767bef57a1d1d6bd4746dd8 |
| --- /dev/null |
| +++ b/chrome/browser/ui/webui/help/version_updater_chromeos_unittest.cc |
| @@ -0,0 +1,114 @@ |
| +// Copyright 2014 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/ui/webui/help/version_updater_chromeos.h" |
| + |
| +#include "base/bind.h" |
| +#include "base/compiler_specific.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "chrome/browser/chromeos/login/users/mock_user_manager.h" |
| +#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
| +#include "chromeos/dbus/dbus_thread_manager.h" |
| +#include "chromeos/dbus/fake_update_engine_client.h" |
| +#include "testing/gmock/include/gmock/gmock.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +using ::testing::AtLeast; |
| +using ::testing::Return; |
| + |
| +namespace chromeos { |
| + |
| +namespace { |
| + |
| +void CheckNotification(VersionUpdater::Status /* status */, |
| + int /* progress */, |
| + const base::string16& /* message */) { |
| +} |
| + |
| +} // namespace |
| + |
| +class VersionUpdaterCrosTest : public ::testing::Test { |
| + protected: |
| + VersionUpdaterCrosTest() |
| + : version_updater_(VersionUpdater::Create()), |
| + fake_update_engine_client_(NULL), |
| + mock_user_manager_(new MockUserManager()), |
| + user_manager_enabler_(mock_user_manager_) { |
| + VersionUpdaterCros* version_updater = |
| + static_cast<VersionUpdaterCros*>(version_updater_.get()); |
| + version_updater->set_can_update_for_testing(true); |
| + } |
| + |
| + virtual ~VersionUpdaterCrosTest() {} |
| + |
| + virtual void SetUp() OVERRIDE { |
| + fake_update_engine_client_ = new FakeUpdateEngineClient(); |
| + scoped_ptr<DBusThreadManagerSetter> dbus_setter = |
| + DBusThreadManager::GetSetterForTesting(); |
| + dbus_setter->SetUpdateEngineClient( |
| + scoped_ptr<UpdateEngineClient>(fake_update_engine_client_).Pass()); |
| + |
| + EXPECT_CALL(*mock_user_manager_, IsCurrentUserOwner()) |
| + .WillRepeatedly(Return(false)); |
| + EXPECT_CALL(*mock_user_manager_, Shutdown()).Times(AtLeast(0)); |
| + } |
| + |
| + scoped_ptr<VersionUpdater> version_updater_; |
| + FakeUpdateEngineClient* fake_update_engine_client_; // Not owned. |
| + |
| + MockUserManager* mock_user_manager_; // Not owned. |
| + ScopedUserManagerEnabler user_manager_enabler_; |
| +}; |
| + |
| +TEST_F(VersionUpdaterCrosTest, SetChannelDuringChannelSwitch) { |
|
James Hawkins
2014/09/18 16:34:03
SetChannelDuringChannelSwitch is not particularly
ygorshenin1
2014/09/18 19:46:47
Done.
|
| + version_updater_->SetChannel("beta-channel", true); |
| + |
| + { |
| + UpdateEngineClient::Status status; |
| + status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; |
| + fake_update_engine_client_->set_default_status(status); |
| + fake_update_engine_client_->NotifyObserversThatStatusChanged(status); |
| + } |
| + |
| + EXPECT_EQ(0, fake_update_engine_client_->request_update_check_call_count()); |
| + |
| + // IDLE -> DOWNLOADING transition after update check. |
| + version_updater_->CheckForUpdate(base::Bind(&CheckNotification)); |
| + EXPECT_EQ(1, fake_update_engine_client_->request_update_check_call_count()); |
| + |
| + { |
| + UpdateEngineClient::Status status; |
| + status.status = UpdateEngineClient::UPDATE_STATUS_DOWNLOADING; |
| + status.download_progress = 0.1; |
| + fake_update_engine_client_->set_default_status(status); |
| + fake_update_engine_client_->NotifyObserversThatStatusChanged(status); |
| + } |
| + |
| + version_updater_->SetChannel("stable-channel", true); |
| + |
| + // DOWNLOADING -> REPORTING_ERROR_EVENT transition since target channel is not |
| + // equal to downloading channel now. |
| + { |
| + UpdateEngineClient::Status status; |
| + status.status = UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT; |
| + fake_update_engine_client_->set_default_status(status); |
| + fake_update_engine_client_->NotifyObserversThatStatusChanged(status); |
| + } |
| + |
| + version_updater_->CheckForUpdate(base::Bind(&CheckNotification)); |
| + EXPECT_EQ(1, fake_update_engine_client_->request_update_check_call_count()); |
| + |
| + // REPORTING_ERROR_EVENT -> IDLE transition, update check should be |
| + // automatically scheduled. |
| + { |
| + UpdateEngineClient::Status status; |
| + status.status = UpdateEngineClient::UPDATE_STATUS_IDLE; |
| + fake_update_engine_client_->set_default_status(status); |
| + fake_update_engine_client_->NotifyObserversThatStatusChanged(status); |
| + } |
| + |
| + EXPECT_EQ(2, fake_update_engine_client_->request_update_check_call_count()); |
| +} |
| + |
| +} // namespace chromeos |