summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/sync_status_ui_helper_mac_unittest.mm
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/sync_status_ui_helper_mac_unittest.mm')
-rw-r--r--chrome/browser/sync/sync_status_ui_helper_mac_unittest.mm110
1 files changed, 110 insertions, 0 deletions
diff --git a/chrome/browser/sync/sync_status_ui_helper_mac_unittest.mm b/chrome/browser/sync/sync_status_ui_helper_mac_unittest.mm
new file mode 100644
index 0000000..e5418e1
--- /dev/null
+++ b/chrome/browser/sync/sync_status_ui_helper_mac_unittest.mm
@@ -0,0 +1,110 @@
+// Copyright (c) 2009 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.
+
+#include "chrome/browser/sync/sync_status_ui_helper_mac.h"
+
+#import <Cocoa/Cocoa.h>
+
+#include "app/l10n_util_mac.h"
+#include "base/scoped_nsobject.h"
+#include "chrome/app/chrome_dll_resource.h"
+#include "chrome/browser/cocoa/cocoa_test_helper.h"
+#include "grit/generated_resources.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+class SyncStatusUIHelperMacTest : public CocoaTest {
+};
+
+TEST_F(SyncStatusUIHelperMacTest, UpdateSyncItem) {
+ scoped_nsobject<NSMenuItem> syncMenuItem(
+ [[NSMenuItem alloc] initWithTitle:@""
+ action:@selector(commandDispatch)
+ keyEquivalent:@""]);
+ [syncMenuItem setTag:IDC_SYNC_BOOKMARKS];
+
+ NSString* bookmarksSynced =
+ l10n_util::GetNSStringWithFixup(IDS_SYNC_MENU_BOOKMARKS_SYNCED_LABEL);
+ NSString* bookmarkSyncError =
+ l10n_util::GetNSStringWithFixup(IDS_SYNC_MENU_BOOKMARK_SYNC_ERROR_LABEL);
+ NSString* startSync =
+ l10n_util::GetNSStringWithFixup(IDS_SYNC_START_SYNC_BUTTON_LABEL);
+
+ [syncMenuItem setTitle:@""];
+ [syncMenuItem setHidden:NO];
+
+ browser_sync::UpdateSyncItemForStatus(syncMenuItem, NO,
+ SyncStatusUIHelper::PRE_SYNCED);
+ EXPECT_TRUE([[syncMenuItem title] isEqualTo:startSync]);
+ EXPECT_TRUE([syncMenuItem isHidden]);
+
+ [syncMenuItem setTitle:@""];
+ [syncMenuItem setHidden:YES];
+ browser_sync::UpdateSyncItemForStatus(syncMenuItem, YES,
+ SyncStatusUIHelper::SYNC_ERROR);
+ EXPECT_TRUE([[syncMenuItem title] isEqualTo:bookmarkSyncError]);
+ EXPECT_FALSE([syncMenuItem isHidden]);
+
+ [syncMenuItem setTitle:@""];
+ [syncMenuItem setHidden:NO];
+ browser_sync::UpdateSyncItemForStatus(syncMenuItem, NO,
+ SyncStatusUIHelper::SYNCED);
+ EXPECT_TRUE([[syncMenuItem title] isEqualTo:bookmarksSynced]);
+ EXPECT_TRUE([syncMenuItem isHidden]);
+}
+
+TEST_F(SyncStatusUIHelperMacTest, UpdateSyncItemWithSeparator) {
+ scoped_nsobject<NSMenu> menu([[NSMenu alloc] initWithTitle:@""]);
+ NSMenuItem* syncMenuItem =
+ [menu addItemWithTitle:@""
+ action:@selector(commandDispatch)
+ keyEquivalent:@""];
+ [syncMenuItem setTag:IDC_SYNC_BOOKMARKS];
+ NSMenuItem* followingSeparator = [NSMenuItem separatorItem];
+ [menu addItem:followingSeparator];
+
+ const SyncStatusUIHelper::MessageType kStatus =
+ SyncStatusUIHelper::PRE_SYNCED;
+
+ [syncMenuItem setHidden:NO];
+ [followingSeparator setHidden:NO];
+ browser_sync::UpdateSyncItemForStatus(syncMenuItem, NO, kStatus);
+ EXPECT_FALSE([followingSeparator isEnabled]);
+ EXPECT_TRUE([syncMenuItem isHidden]);
+ EXPECT_TRUE([followingSeparator isHidden]);
+
+ [syncMenuItem setHidden:YES];
+ [followingSeparator setHidden:YES];
+ browser_sync::UpdateSyncItemForStatus(syncMenuItem, YES, kStatus);
+ EXPECT_FALSE([followingSeparator isEnabled]);
+ EXPECT_FALSE([syncMenuItem isHidden]);
+ EXPECT_FALSE([followingSeparator isHidden]);
+}
+
+TEST_F(SyncStatusUIHelperMacTest, UpdateSyncItemWithNonSeparator) {
+ scoped_nsobject<NSMenu> menu([[NSMenu alloc] initWithTitle:@""]);
+ NSMenuItem* syncMenuItem =
+ [menu addItemWithTitle:@""
+ action:@selector(commandDispatch)
+ keyEquivalent:@""];
+ [syncMenuItem setTag:IDC_SYNC_BOOKMARKS];
+ NSMenuItem* followingNonSeparator =
+ [menu addItemWithTitle:@""
+ action:@selector(commandDispatch)
+ keyEquivalent:@""];
+
+ const SyncStatusUIHelper::MessageType kStatus =
+ SyncStatusUIHelper::PRE_SYNCED;
+
+ browser_sync::UpdateSyncItemForStatus(syncMenuItem, NO, kStatus);
+ EXPECT_TRUE([followingNonSeparator isEnabled]);
+ EXPECT_FALSE([followingNonSeparator isHidden]);
+
+ browser_sync::UpdateSyncItemForStatus(syncMenuItem, YES, kStatus);
+ EXPECT_TRUE([followingNonSeparator isEnabled]);
+ EXPECT_FALSE([followingNonSeparator isHidden]);
+}
+
+} // namespace