network_list_network_header_view_unittest.cc 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // Copyright 2022 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ash/system/network/network_list_network_header_view.h"
  5. #include <memory>
  6. #include "ash/constants/ash_features.h"
  7. #include "ash/strings/grit/ash_strings.h"
  8. #include "ash/system/network/fake_network_list_network_header_view_delegate.h"
  9. #include "ash/system/network/network_list_header_view.h"
  10. #include "ash/system/tray/tri_view.h"
  11. #include "ash/test/ash_test_base.h"
  12. #include "base/test/scoped_feature_list.h"
  13. #include "ui/views/controls/button/toggle_button.h"
  14. #include "ui/views/view.h"
  15. namespace ash {
  16. class NetworkListNetworkHeaderViewTest : public AshTestBase {
  17. public:
  18. void SetUp() override {
  19. AshTestBase::SetUp();
  20. feature_list_.InitAndEnableFeature(features::kQuickSettingsNetworkRevamp);
  21. network_list_network_header_view_ =
  22. std::make_unique<NetworkListNetworkHeaderView>(
  23. &fake_network_list_network_header_delegate_,
  24. IDS_ASH_STATUS_TRAY_NETWORK_MOBILE);
  25. }
  26. void TearDown() override {
  27. network_list_network_header_view_.reset();
  28. AshTestBase::TearDown();
  29. }
  30. FakeNetworkListNetworkHeaderViewDelegate*
  31. fake_network_list_network_header_delegate() {
  32. return &fake_network_list_network_header_delegate_;
  33. }
  34. NetworkListNetworkHeaderView* network_list_network_header_view() {
  35. return network_list_network_header_view_.get();
  36. }
  37. views::ToggleButton* GetToggleButton() {
  38. return FindViewById<views::ToggleButton*>(
  39. NetworkListNetworkHeaderView::kToggleButtonId);
  40. }
  41. void SetToggleVisibility(bool visible) {
  42. network_list_network_header_view()->SetToggleVisibility(visible);
  43. }
  44. template <class T>
  45. T FindViewById(int id) {
  46. return static_cast<T>(
  47. network_list_network_header_view_->container()->GetViewByID(id));
  48. }
  49. private:
  50. base::test::ScopedFeatureList feature_list_;
  51. FakeNetworkListNetworkHeaderViewDelegate
  52. fake_network_list_network_header_delegate_;
  53. std::unique_ptr<NetworkListNetworkHeaderView>
  54. network_list_network_header_view_;
  55. };
  56. TEST_F(NetworkListNetworkHeaderViewTest, ToggleStates) {
  57. views::ToggleButton* toggle_button = GetToggleButton();
  58. EXPECT_NE(nullptr, toggle_button);
  59. EXPECT_EQ(views::Button::ButtonState::STATE_NORMAL,
  60. toggle_button->GetState());
  61. EXPECT_TRUE(toggle_button->GetVisible());
  62. EXPECT_TRUE(toggle_button->GetAcceptsEvents());
  63. EXPECT_FALSE(toggle_button->GetIsOn());
  64. network_list_network_header_view()->SetToggleState(/*enabled=*/false,
  65. /*is_on=*/true);
  66. EXPECT_FALSE(toggle_button->GetAcceptsEvents());
  67. EXPECT_TRUE(toggle_button->GetIsOn());
  68. SetToggleVisibility(/*visible=*/false);
  69. EXPECT_FALSE(toggle_button->GetVisible());
  70. }
  71. } // namespace ash