Chromium Code Reviews| Index: ios/chrome/browser/ui/tools_menu/tools_menu_view_controller_unittest.mm |
| diff --git a/ios/chrome/browser/ui/tools_menu/tools_menu_view_controller_unittest.mm b/ios/chrome/browser/ui/tools_menu/tools_menu_view_controller_unittest.mm |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3d0314328f2610abdfee0bb6513859f3d253acc5 |
| --- /dev/null |
| +++ b/ios/chrome/browser/ui/tools_menu/tools_menu_view_controller_unittest.mm |
| @@ -0,0 +1,96 @@ |
| +// Copyright 2016 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. |
| + |
| +#import "ios/chrome/browser/ui/tools_menu/tools_menu_view_controller.h" |
|
Eugene But (OOO till 7-30)
2017/03/06 23:02:06
Linebreak after this
liaoyuke
2017/03/07 01:02:43
Done.
|
| +#include "base/mac/scoped_nsobject.h" |
|
Eugene But (OOO till 7-30)
2017/03/06 23:02:06
import
liaoyuke
2017/03/07 01:02:43
Done.
|
| +#include "ios/chrome/browser/ui/commands/ios_command_ids.h" |
| +#import "ios/chrome/browser/ui/tools_menu/tools_menu_configuration.h" |
| +#import "ios/chrome/browser/ui/tools_menu/tools_menu_view_item.h" |
| +#include "ios/web/public/user_agent.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| +#include "testing/platform_test.h" |
| + |
| +@interface ToolsMenuViewController (ExposedForTesting) |
|
Eugene But (OOO till 7-30)
2017/03/06 23:02:06
From "Unit Testing Best Practices": Test code usin
liaoyuke
2017/03/07 01:02:43
Thanks for explaining using links, they are really
|
| +@property(nonatomic, retain) NSMutableArray* menuItems; |
| +@end |
| + |
| +class ToolsMenuViewControllerTest : public PlatformTest { |
| + protected: |
| + void SetUp() override { |
| + PlatformTest::SetUp(); |
| + _configuration.reset( |
| + [[ToolsMenuConfiguration alloc] initWithDisplayView:nil]); |
| + _controller.reset([[ToolsMenuViewController alloc] init]); |
| + } |
| + |
| + void TearDown() override { |
| + _configuration.reset(); |
|
Eugene But (OOO till 7-30)
2017/03/06 23:02:06
Is this necessary?
liaoyuke
2017/03/07 01:02:43
Done.
|
| + _controller.reset(); |
| + PlatformTest::TearDown(); |
| + } |
| + |
| + // Returns tools menu view item by IDC value, null if not exit. |
| + ToolsMenuViewItem* GetToolsMenuViewItemWithTag(int tag) { |
| + for (ToolsMenuViewItem* item in [_controller menuItems]) { |
| + if ([item tag] == tag) |
| + return item; |
| + } |
| + |
| + return nullptr; |
| + } |
| + |
| + base::scoped_nsobject<ToolsMenuConfiguration> _configuration; |
|
Eugene But (OOO till 7-30)
2017/03/06 23:02:06
configuration_
liaoyuke
2017/03/07 01:02:43
Done.
|
| + base::scoped_nsobject<ToolsMenuViewController> _controller; |
| +}; |
| + |
| +// Tests that "Request Desktop Site" is visible and enabled, and |
| +// "Request Mobile Site" is invisible when the current page is a native page, |
| +// whose user agent type is NONE. |
| +TEST_F(ToolsMenuViewControllerTest, TestUserAgentTypeNONE) { |
| + [_configuration setUserAgentType:web::UserAgentType::NONE]; |
| + [_controller initializeMenuWithConfiguration:_configuration.get()]; |
| + |
| + ToolsMenuViewItem* desktop_item = |
| + GetToolsMenuViewItemWithTag(IDC_REQUEST_DESKTOP_SITE); |
| + ASSERT_TRUE(desktop_item); |
| + EXPECT_FALSE(desktop_item.active); |
| + |
| + ToolsMenuViewItem* mobile_item = |
| + GetToolsMenuViewItemWithTag(IDC_REQUEST_MOBILE_SITE); |
| + EXPECT_FALSE(mobile_item); |
| +} |
| + |
| +// Tests that "Request Desktop Site" is visible and not enabled, and |
| +// "Request Mobile Site" is invisible when the current page is a web page and |
| +// uses MOBILE user agent. |
| +TEST_F(ToolsMenuViewControllerTest, TestUserAgentTypeMOBILE) { |
| + [_configuration setUserAgentType:web::UserAgentType::MOBILE]; |
| + [_controller initializeMenuWithConfiguration:_configuration.get()]; |
| + |
| + ToolsMenuViewItem* desktop_item = |
| + GetToolsMenuViewItemWithTag(IDC_REQUEST_DESKTOP_SITE); |
| + ASSERT_TRUE(desktop_item); |
| + EXPECT_TRUE(desktop_item.active); |
| + |
| + ToolsMenuViewItem* mobile_item = |
| + GetToolsMenuViewItemWithTag(IDC_REQUEST_MOBILE_SITE); |
| + EXPECT_FALSE(mobile_item); |
| +} |
| + |
| +// Tests that "Request Desktop Site" is invisible, and "Request Mobile Site" is |
| +// visible and enabled when the current page is a web page and uses DESKTOP user |
| +// agent. |
| +TEST_F(ToolsMenuViewControllerTest, TestUserAgentTypeDESKTOP) { |
| + [_configuration setUserAgentType:web::UserAgentType::DESKTOP]; |
| + [_controller initializeMenuWithConfiguration:_configuration.get()]; |
| + |
| + ToolsMenuViewItem* mobile_item = |
| + GetToolsMenuViewItemWithTag(IDC_REQUEST_MOBILE_SITE); |
| + ASSERT_TRUE(mobile_item); |
| + EXPECT_TRUE(mobile_item.active); |
| + |
| + ToolsMenuViewItem* desktop_item = |
| + GetToolsMenuViewItemWithTag(IDC_REQUEST_DESKTOP_SITE); |
| + EXPECT_FALSE(desktop_item); |
| +} |