Index: chrome/browser/cocoa/about_window_controller_unittest.mm |
=================================================================== |
--- chrome/browser/cocoa/about_window_controller_unittest.mm (revision 30049) |
+++ chrome/browser/cocoa/about_window_controller_unittest.mm (working copy) |
@@ -5,6 +5,7 @@ |
#import <Cocoa/Cocoa.h> |
#import "base/scoped_nsobject.h" |
+#import "chrome/app/keystone_glue.h" |
#import "chrome/browser/cocoa/about_window_controller.h" |
#include "chrome/browser/cocoa/browser_test_helper.h" |
#include "chrome/browser/cocoa/cocoa_test_helper.h" |
@@ -13,6 +14,23 @@ |
namespace { |
+void PostAutoupdateStatusNotification(AutoupdateStatus status, |
+ NSString* version) { |
+ NSNumber* statusNumber = [NSNumber numberWithInt:status]; |
+ NSMutableDictionary* dictionary = |
+ [NSMutableDictionary dictionaryWithObjects:&statusNumber |
+ forKeys:&kAutoupdateStatusStatus |
+ count:1]; |
+ if (version) { |
+ [dictionary setObject:version forKey:kAutoupdateStatusVersion]; |
+ } |
+ |
+ NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; |
+ [center postNotificationName:kAutoupdateStatusNotification |
+ object:nil |
+ userInfo:dictionary]; |
+} |
+ |
class AboutWindowControllerTest : public PlatformTest { |
public: |
virtual void SetUp() { |
@@ -27,7 +45,7 @@ |
}; |
TEST_F(AboutWindowControllerTest, TestCopyright) { |
- NSString* text = [BuildAboutWindowLegalTextBlock() string]; |
+ NSString* text = [[AboutWindowController legalTextBlock] string]; |
// Make sure we have the word "Copyright" in it, which is present in all |
// locales. |
@@ -36,7 +54,7 @@ |
} |
TEST_F(AboutWindowControllerTest, RemovesLinkAnchors) { |
- NSString* text = [BuildAboutWindowLegalTextBlock() string]; |
+ NSString* text = [[AboutWindowController legalTextBlock] string]; |
// Make sure that we removed the "BEGIN_LINK" and "END_LINK" anchors. |
NSRange range = [text rangeOfString:@"BEGIN_LINK"]; |
@@ -47,7 +65,7 @@ |
} |
TEST_F(AboutWindowControllerTest, AwakeNibSetsString) { |
- NSAttributedString* legal_text = BuildAboutWindowLegalTextBlock(); |
+ NSAttributedString* legal_text = [AboutWindowController legalTextBlock]; |
NSAttributedString* text_storage = |
[[about_window_controller_ legalText] textStorage]; |
@@ -60,7 +78,7 @@ |
// Not enabled until we know if updates are available. |
ASSERT_FALSE([button isEnabled]); |
- [about_window_controller_ upToDateCheckCompleted:YES latestVersion:nil]; |
+ PostAutoupdateStatusNotification(kAutoupdateAvailable, nil); |
ASSERT_TRUE([button isEnabled]); |
// Make sure the button is hooked up |
@@ -75,16 +93,52 @@ |
// Doesn't confirm correctness, but does confirm something happens. |
TEST_F(AboutWindowControllerTest, TestCallbacks) { |
NSString *lastText = [[about_window_controller_ updateText] |
- stringValue]; |
- [about_window_controller_ upToDateCheckCompleted:NO latestVersion:@"foo"]; |
+ stringValue]; |
+ PostAutoupdateStatusNotification(kAutoupdateCurrent, @"foo"); |
ASSERT_FALSE([lastText isEqual:[[about_window_controller_ updateText] |
- stringValue]]); |
+ stringValue]]); |
lastText = [[about_window_controller_ updateText] stringValue]; |
- [about_window_controller_ updateCompleted:NO installs:0]; |
+ PostAutoupdateStatusNotification(kAutoupdateCurrent, @"foo"); |
+ ASSERT_TRUE([lastText isEqual:[[about_window_controller_ updateText] |
+ stringValue]]); |
+ |
+ lastText = [[about_window_controller_ updateText] stringValue]; |
+ PostAutoupdateStatusNotification(kAutoupdateCurrent, @"bar"); |
+ ASSERT_FALSE([lastText isEqual:[[about_window_controller_ updateText] |
+ stringValue]]); |
+ |
+ lastText = [[about_window_controller_ updateText] stringValue]; |
+ PostAutoupdateStatusNotification(kAutoupdateAvailable, nil); |
+ ASSERT_FALSE([lastText isEqual:[[about_window_controller_ updateText] |
+ stringValue]]); |
+ |
+ lastText = [[about_window_controller_ updateText] stringValue]; |
+ PostAutoupdateStatusNotification(kAutoupdateCheckFailed, nil); |
+ ASSERT_FALSE([lastText isEqual:[[about_window_controller_ updateText] |
+ stringValue]]); |
+ |
+#if 0 |
+ // TODO(mark): The kAutoupdateInstalled portion of the test is disabled |
+ // because it leaks restart dialogs. If the About box is revised to use |
+ // a button within the box to advise a restart instead of popping dialogs, |
+ // these tests should be enabled. |
+ |
+ lastText = [[about_window_controller_ updateText] stringValue]; |
+ PostAutoupdateStatusNotification(kAutoupdateInstalled, @"ver"); |
+ ASSERT_FALSE([lastText isEqual:[[about_window_controller_ updateText] |
+ stringValue]]); |
+ |
+ lastText = [[about_window_controller_ updateText] stringValue]; |
+ PostAutoupdateStatusNotification(kAutoupdateInstalled, nil); |
+ ASSERT_FALSE([lastText isEqual:[[about_window_controller_ updateText] |
+ stringValue]]); |
+#endif |
+ |
+ lastText = [[about_window_controller_ updateText] stringValue]; |
+ PostAutoupdateStatusNotification(kAutoupdateInstallFailed, nil); |
ASSERT_FALSE([lastText isEqual:[[about_window_controller_ |
- updateText] stringValue]]); |
+ updateText] stringValue]]); |
} |
} // namespace |
- |