Chromium Code Reviews| Index: ui/app_list/cocoa/apps_search_box_controller_unittest.mm |
| diff --git a/ui/app_list/cocoa/apps_search_box_controller_unittest.mm b/ui/app_list/cocoa/apps_search_box_controller_unittest.mm |
| index c9d079758a0377f2e57b670858accbbd9bc440b2..8f792e63b2a6cc79e2bfe994fd6b38545dc9090e 100644 |
| --- a/ui/app_list/cocoa/apps_search_box_controller_unittest.mm |
| +++ b/ui/app_list/cocoa/apps_search_box_controller_unittest.mm |
| @@ -9,16 +9,17 @@ |
| #include "base/strings/utf_string_conversions.h" |
| #import "testing/gtest_mac.h" |
| #include "ui/app_list/app_list_menu.h" |
| -#import "ui/app_list/cocoa/current_user_menu_item_view.h" |
| #include "ui/app_list/search_box_model.h" |
| #include "ui/app_list/test/app_list_test_model.h" |
| #include "ui/app_list/test/app_list_test_view_delegate.h" |
| +#import "ui/base/cocoa/menu_controller.h" |
| #import "ui/base/test/ui_cocoa_test_helper.h" |
| @interface TestAppsSearchBoxDelegate : NSObject<AppsSearchBoxDelegate> { |
| @private |
| app_list::SearchBoxModel searchBoxModel_; |
| app_list::test::AppListTestViewDelegate appListDelegate_; |
| + app_list::test::AppListTestModel appListModel_; |
| int textChangeCount_; |
| } |
| @@ -30,6 +31,18 @@ |
| @synthesize textChangeCount = textChangeCount_; |
| +- (id)init { |
| + if ((self = [super init])) { |
| + app_list::AppListModel::Users users(2); |
| + users[0].name = ASCIIToUTF16("user1"); |
| + users[1].name = ASCIIToUTF16("user2"); |
| + users[1].email = ASCIIToUTF16("user2@chromium.org"); |
| + users[1].active = true; |
| + appListModel_.SetUsers(users); |
| + } |
| + return self; |
| +} |
| + |
| - (app_list::SearchBoxModel*)searchBoxModel { |
| return &searchBoxModel_; |
| } |
| @@ -52,12 +65,8 @@ |
| return 3; |
| } |
| -- (NSString*)currentUserName { |
| - return @""; |
| -} |
| - |
| -- (NSString*)currentUserEmail { |
| - return @""; |
| +- (app_list::AppListModel*)appListModel { |
| + return &appListModel_; |
| } |
| @end |
| @@ -139,8 +148,33 @@ TEST_F(AppsSearchBoxControllerTest, SearchBoxModel) { |
| EXPECT_EQ(4, [delegate_ textChangeCount]); |
| } |
| +// Test the popup menu items when there is only one user.. |
| +TEST_F(AppsSearchBoxControllerTest, SearchBoxMenuSingleUser) { |
| + // Set a single user. We need to set the delegate again because the |
| + // AppListModel observer isn't hooked up in these tests. |
| + [delegate_ appListModel]->SetUsers(app_list::AppListModel::Users(1)); |
| + [apps_search_box_controller_ setDelegate:delegate_]; |
| + |
| + NSPopUpButton* menu_control = [apps_search_box_controller_ menuControl]; |
| + EXPECT_TRUE([apps_search_box_controller_ appListMenu]); |
| + ui::MenuModel* menu_model |
| + = [apps_search_box_controller_ appListMenu]->menu_model(); |
| + // Add one to the item count to account for the blank, first item that Cocoa |
| + // has in its popup menus. |
| + EXPECT_EQ(menu_model->GetItemCount() + 1, |
| + [[menu_control menu] numberOfItems]); |
| + |
| + // All command ids should be less than |SELECT_PROFILE| as no user menu items |
| + // are being shown. |
| + for (int i = 0; i < menu_model->GetItemCount(); ++i) { |
|
tapted
2013/09/16 20:46:44
nit: no braces
calamity
2013/09/17 00:09:26
Done.
|
| + EXPECT_LT(menu_model->GetCommandIdAt(i), AppListMenu::SELECT_PROFILE); |
|
tapted
2013/09/16 20:46:44
this is cool - I'd keep it. But I'd also add (outs
tapted
2013/09/16 21:02:20
oops. and to nit my own comment: the "more constan
calamity
2013/09/17 00:09:26
Done.
|
| + } |
| +} |
| + |
| // Test the popup menu items. |
|
tapted
2013/09/16 20:46:44
nit: ... for the multi-profile case.
calamity
2013/09/17 00:09:26
Done.
|
| TEST_F(AppsSearchBoxControllerTest, SearchBoxMenu) { |
| + const app_list::AppListModel::Users& users = |
| + [delegate_ appListModel]->users(); |
| NSPopUpButton* menu_control = [apps_search_box_controller_ menuControl]; |
| EXPECT_TRUE([apps_search_box_controller_ appListMenu]); |
| ui::MenuModel* menu_model |
| @@ -150,14 +184,31 @@ TEST_F(AppsSearchBoxControllerTest, SearchBoxMenu) { |
| EXPECT_EQ(menu_model->GetItemCount() + 1, |
| [[menu_control menu] numberOfItems]); |
| - // The CURRENT_USER item should contain our custom view. |
| ui::MenuModel* found_menu_model = menu_model; |
| int index; |
| + MenuController* controller = [[menu_control menu] delegate]; |
| + |
| + // The first user item is an unchecked label. |
| + EXPECT_TRUE(ui::MenuModel::GetModelAndIndexForCommandId( |
| + AppListMenu::SELECT_PROFILE, &menu_model, &index)); |
| + EXPECT_EQ(found_menu_model, menu_model); |
| + NSMenuItem* unchecked_user_item = [[menu_control menu] itemAtIndex:index + 1]; |
| + [controller validateUserInterfaceItem:unchecked_user_item]; |
| + // The profile name should be shown if there is no email available. |
| + EXPECT_NSEQ(base::SysUTF16ToNSString(users[0].name), |
| + [unchecked_user_item title]); |
| + EXPECT_EQ(NSOffState, [unchecked_user_item state]); |
| + |
| + // The second user item is a checked label because it is the active profile. |
| EXPECT_TRUE(ui::MenuModel::GetModelAndIndexForCommandId( |
| - AppListMenu::CURRENT_USER, &menu_model, &index)); |
| + AppListMenu::SELECT_PROFILE + 1, &menu_model, &index)); |
| EXPECT_EQ(found_menu_model, menu_model); |
| - NSMenuItem* current_user_item = [[menu_control menu] itemAtIndex:index + 1]; |
| - EXPECT_TRUE([current_user_item view]); |
| + NSMenuItem* checked_user_item = [[menu_control menu] itemAtIndex:index + 1]; |
| + [controller validateUserInterfaceItem:checked_user_item]; |
| + // The email is shown when available. |
| + EXPECT_NSEQ(base::SysUTF16ToNSString(users[1].email), |
| + [checked_user_item title]); |
| + EXPECT_EQ(NSOnState, [checked_user_item state]); |
| // A regular item should have just the label. |
| EXPECT_TRUE(ui::MenuModel::GetModelAndIndexForCommandId( |
| @@ -169,30 +220,5 @@ TEST_F(AppsSearchBoxControllerTest, SearchBoxMenu) { |
| [settings_item title]); |
| } |
| -// Test initialization and display of the custom menu item that shows the |
| -// currently signed-in user. This is a non-interactive view. |
| -class AppsSearchBoxCustomMenuItemTest : public ui::CocoaTest { |
| - public: |
| - AppsSearchBoxCustomMenuItemTest() { |
| - Init(); |
| - } |
| - |
| - virtual void SetUp() OVERRIDE { |
| - current_user_menu_item_.reset([[[CurrentUserMenuItemView alloc] |
| - initWithCurrentUser:@"testUser" |
| - userEmail:@"testUser@chromium.org"] retain]); |
| - ui::CocoaTest::SetUp(); |
| - [[test_window() contentView] addSubview:current_user_menu_item_]; |
| - } |
| - |
| - protected: |
| - base::scoped_nsobject<NSView> current_user_menu_item_; |
| - |
| - private: |
| - DISALLOW_COPY_AND_ASSIGN(AppsSearchBoxCustomMenuItemTest); |
| -}; |
| - |
| -TEST_VIEW(AppsSearchBoxCustomMenuItemTest, current_user_menu_item_); |
| - |
| } // namespace test |
| } // namespace app_list |