1 // Copyright (c) 2011 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.
5 #include "chrome/browser/sync/sync_ui_util_mac.h"
7 #import <Cocoa/Cocoa.h>
9 #include "base/memory/scoped_nsobject.h"
10 #include "chrome/app/chrome_command_ids.h"
11 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
12 #include "grit/generated_resources.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "ui/base/l10n/l10n_util_mac.h"
18 class SyncStatusUIHelperMacTest : public CocoaTest {
21 TEST_F(SyncStatusUIHelperMacTest, UpdateSyncItem) {
22 scoped_nsobject<NSMenuItem> syncMenuItem(
23 [[NSMenuItem alloc] initWithTitle:@""
24 action:@selector(commandDispatch)
26 [syncMenuItem setTag:IDC_SYNC_BOOKMARKS];
28 NSString* bookmarksSynced =
29 l10n_util::GetNSStringWithFixup(IDS_SYNC_MENU_SYNCED_LABEL);
30 NSString* bookmarkSyncError =
31 l10n_util::GetNSStringWithFixup(IDS_SYNC_MENU_SYNC_ERROR_LABEL);
33 l10n_util::GetNSStringWithFixup(IDS_SYNC_START_SYNC_BUTTON_LABEL);
35 [syncMenuItem setTitle:@""];
36 [syncMenuItem setHidden:NO];
38 sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, NO,
39 sync_ui_util::PRE_SYNCED);
40 EXPECT_TRUE([[syncMenuItem title] isEqualTo:startSync]);
41 EXPECT_TRUE([syncMenuItem isHidden]);
43 [syncMenuItem setTitle:@""];
44 [syncMenuItem setHidden:YES];
45 sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, YES,
46 sync_ui_util::SYNC_ERROR);
47 EXPECT_TRUE([[syncMenuItem title] isEqualTo:bookmarkSyncError]);
48 EXPECT_FALSE([syncMenuItem isHidden]);
50 [syncMenuItem setTitle:@""];
51 [syncMenuItem setHidden:NO];
52 sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, NO,
53 sync_ui_util::SYNCED);
54 EXPECT_TRUE([[syncMenuItem title] isEqualTo:bookmarksSynced]);
55 EXPECT_TRUE([syncMenuItem isHidden]);
58 TEST_F(SyncStatusUIHelperMacTest, UpdateSyncItemWithSeparator) {
59 scoped_nsobject<NSMenu> menu([[NSMenu alloc] initWithTitle:@""]);
60 NSMenuItem* syncMenuItem =
61 [menu addItemWithTitle:@""
62 action:@selector(commandDispatch)
64 [syncMenuItem setTag:IDC_SYNC_BOOKMARKS];
65 NSMenuItem* followingSeparator = [NSMenuItem separatorItem];
66 [menu addItem:followingSeparator];
68 const sync_ui_util::MessageType kStatus = sync_ui_util::PRE_SYNCED;
70 [syncMenuItem setHidden:NO];
71 [followingSeparator setHidden:NO];
72 sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, NO, kStatus);
73 EXPECT_FALSE([followingSeparator isEnabled]);
74 EXPECT_TRUE([syncMenuItem isHidden]);
75 EXPECT_TRUE([followingSeparator isHidden]);
77 [syncMenuItem setHidden:YES];
78 [followingSeparator setHidden:YES];
79 sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, YES, kStatus);
80 EXPECT_FALSE([followingSeparator isEnabled]);
81 EXPECT_FALSE([syncMenuItem isHidden]);
82 EXPECT_FALSE([followingSeparator isHidden]);
85 TEST_F(SyncStatusUIHelperMacTest, UpdateSyncItemWithNonSeparator) {
86 scoped_nsobject<NSMenu> menu([[NSMenu alloc] initWithTitle:@""]);
87 NSMenuItem* syncMenuItem =
88 [menu addItemWithTitle:@""
89 action:@selector(commandDispatch)
91 [syncMenuItem setTag:IDC_SYNC_BOOKMARKS];
92 NSMenuItem* followingNonSeparator =
93 [menu addItemWithTitle:@""
94 action:@selector(commandDispatch)
97 const sync_ui_util::MessageType kStatus = sync_ui_util::PRE_SYNCED;
99 sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, NO, kStatus);
100 EXPECT_TRUE([followingNonSeparator isEnabled]);
101 EXPECT_FALSE([followingNonSeparator isHidden]);
103 sync_ui_util::UpdateSyncItemForStatus(syncMenuItem, YES, kStatus);
104 EXPECT_TRUE([followingNonSeparator isEnabled]);
105 EXPECT_FALSE([followingNonSeparator isHidden]);