Chromium Code Reviews| Index: ash/system/network/tray_network_unittest.cc |
| diff --git a/ash/system/network/tray_network_unittest.cc b/ash/system/network/tray_network_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a1dd9973026cd903b42b9157675523a10bcf03d9 |
| --- /dev/null |
| +++ b/ash/system/network/tray_network_unittest.cc |
| @@ -0,0 +1,92 @@ |
| +// Copyright 2017 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 "ash/system/network/tray_network.h" |
| + |
| +#include "ash/login_status.h" |
| +#include "ash/system/network/network_state_list_detailed_view.h" |
| +#include "ash/system/tray/system_tray.h" |
| +#include "ash/test/ash_test_base.h" |
| +#include "base/macros.h" |
| +#include "chromeos/dbus/dbus_thread_manager.h" |
| +#include "chromeos/network/network_handler.h" |
| +#include "components/prefs/testing_pref_service.h" |
| +#include "ui/message_center/message_center.h" |
| + |
| +using message_center::MessageCenter; |
| + |
| +namespace ash { |
| +namespace { |
| + |
| +class TrayNetworkTest : public test::AshTestBase { |
|
stevenjb
2017/05/03 22:11:40
Tests, hooray!
|
| + public: |
| + TrayNetworkTest() = default; |
| + ~TrayNetworkTest() override = default; |
| + |
| + // testing::Test: |
| + void SetUp() override { |
| + chromeos::DBusThreadManager::Initialize(); |
| + // Initializing NetworkHandler before ash is more like production. |
| + chromeos::NetworkHandler::Initialize(); |
| + test::AshTestBase::SetUp(); |
| + chromeos::NetworkHandler::Get()->InitializePrefServices(&profile_prefs_, |
| + &local_state_); |
| + // Networking stubs may have asynchronous initialization. |
| + RunAllPendingInMessageLoop(); |
| + } |
| + |
| + void TearDown() override { |
| + // This roughly matches production shutdown order. |
| + chromeos::NetworkHandler::Get()->ShutdownPrefServices(); |
| + test::AshTestBase::TearDown(); |
| + chromeos::NetworkHandler::Shutdown(); |
| + chromeos::DBusThreadManager::Shutdown(); |
| + } |
| + |
| + private: |
| + TestingPrefServiceSimple profile_prefs_; |
| + TestingPrefServiceSimple local_state_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TrayNetworkTest); |
| +}; |
| + |
| +// Verifies that the network views can be created. |
| +TEST_F(TrayNetworkTest, Basics) { |
| + // Open the system tray menu. |
| + SystemTray* system_tray = GetPrimarySystemTray(); |
| + system_tray->ShowDefaultView(BUBBLE_CREATE_NEW); |
| + RunAllPendingInMessageLoop(); |
| + |
| + // Show network details. |
| + TrayNetwork* tray_network = system_tray->GetTrayNetworkForTesting(); |
| + const int close_delay_in_seconds = 0; |
| + bool activate = true; |
| + system_tray->ShowDetailedView(tray_network, close_delay_in_seconds, activate, |
| + BUBBLE_USE_EXISTING); |
| + RunAllPendingInMessageLoop(); |
| + |
| + // Network details view was created. |
| + ASSERT_TRUE(tray_network->detailed()); |
| + EXPECT_TRUE(tray_network->detailed()->visible()); |
| +} |
| + |
| +// Verifies that toggling Wi-Fi (usually via keyboard) shows a notification. |
| +TEST_F(TrayNetworkTest, ToggleWifi) { |
| + TrayNetwork* tray_network = |
| + GetPrimarySystemTray()->GetTrayNetworkForTesting(); |
| + |
| + // No notifications at startup. |
| + ASSERT_EQ(0u, MessageCenter::Get()->NotificationCount()); |
| + |
| + // Simulate a user action to toggle Wi-Fi. |
| + tray_network->RequestToggleWifi(); |
| + |
| + // Notification was shown. |
| + EXPECT_EQ(1u, MessageCenter::Get()->NotificationCount()); |
| + EXPECT_TRUE(MessageCenter::Get()->HasPopupNotifications()); |
| + EXPECT_TRUE(MessageCenter::Get()->FindVisibleNotificationById("wifi-toggle")); |
| +} |
| + |
| +} // namespace |
| +} // namespace ash |