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..a822733f41546e41f9d2565feecec4ddfd958465 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,35 @@ TEST_F(AppsSearchBoxControllerTest, SearchBoxModel) { |
EXPECT_EQ(4, [delegate_ textChangeCount]); |
} |
-// Test the popup menu items. |
+// 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) |
+ EXPECT_LT(menu_model->GetCommandIdAt(i), AppListMenu::SELECT_PROFILE); |
+ |
+ // The number of items should match the index that starts profile items. |
+ EXPECT_EQ(AppListMenu::SELECT_PROFILE, menu_model->GetItemCount()); |
+} |
+ |
+// Test the popup menu items for the multi-profile case. |
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 +186,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 +222,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 |