| Index: chrome/app/keystone_glue_unittest.mm
|
| ===================================================================
|
| --- chrome/app/keystone_glue_unittest.mm (revision 30049)
|
| +++ chrome/app/keystone_glue_unittest.mm (working copy)
|
| @@ -14,18 +14,38 @@
|
|
|
|
|
| @implementation FakeGlueRegistration
|
| -- (void)checkForUpdate { }
|
| -- (void)startUpdate { }
|
| +
|
| +// Send the notifications that a real KeystoneGlue object would send.
|
| +
|
| +- (void)checkForUpdate {
|
| + NSNumber* yesNumber = [NSNumber numberWithBool:YES];
|
| + NSString* statusKey = @"Status";
|
| + NSDictionary* dictionary = [NSDictionary dictionaryWithObject:yesNumber
|
| + forKey:statusKey];
|
| + NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
|
| + [center postNotificationName:@"KSRegistrationCheckForUpdateNotification"
|
| + object:nil
|
| + userInfo:dictionary];
|
| +}
|
| +
|
| +- (void)startUpdate {
|
| + NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
|
| + [center postNotificationName:@"KSRegistrationStartUpdateNotification"
|
| + object:nil];
|
| +}
|
| +
|
| @end
|
|
|
|
|
| -@interface FakeKeystoneGlue : KeystoneGlue<KeystoneGlueCallbacks> {
|
| +@interface FakeKeystoneGlue : KeystoneGlue {
|
| @public
|
| BOOL upToDate_;
|
| NSString *latestVersion_;
|
| BOOL successful_;
|
| int installs_;
|
| }
|
| +
|
| +- (void)fakeAboutWindowCallback:(NSNotification*)notification;
|
| @end
|
|
|
|
|
| @@ -38,10 +58,23 @@
|
| latestVersion_ = @"foo bar";
|
| successful_ = YES;
|
| installs_ = 1010101010;
|
| +
|
| + // Set up an observer that takes the notification that the About window
|
| + // listens for.
|
| + NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
|
| + [center addObserver:self
|
| + selector:@selector(fakeAboutWindowCallback:)
|
| + name:kAutoupdateStatusNotification
|
| + object:nil];
|
| }
|
| return self;
|
| }
|
|
|
| +- (void)dealloc {
|
| + [[NSNotificationCenter defaultCenter] removeObserver:self];
|
| + [super dealloc];
|
| +}
|
| +
|
| // For mocking
|
| - (NSDictionary*)infoDictionary {
|
| NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
|
| @@ -69,19 +102,22 @@
|
| return timer_ ? YES : NO;
|
| }
|
|
|
| -- (void)upToDateCheckCompleted:(BOOL)upToDate
|
| - latestVersion:(NSString*)latestVersion {
|
| - upToDate_ = upToDate;
|
| - latestVersion_ = latestVersion;
|
| +- (void)addFakeRegistration {
|
| + registration_ = [[FakeGlueRegistration alloc] init];
|
| }
|
|
|
| -- (void)updateCompleted:(BOOL)successful installs:(int)installs {
|
| - successful_ = successful;
|
| - installs_ = installs;
|
| -}
|
| +- (void)fakeAboutWindowCallback:(NSNotification*)notification {
|
| + NSDictionary* dictionary = [notification userInfo];
|
| + AutoupdateStatus status = static_cast<AutoupdateStatus>(
|
| + [[dictionary objectForKey:kAutoupdateStatusStatus] intValue]);
|
|
|
| -- (void)addFakeRegistration {
|
| - registration_ = [[FakeGlueRegistration alloc] init];
|
| + if (status == kAutoupdateAvailable) {
|
| + upToDate_ = NO;
|
| + latestVersion_ = [dictionary objectForKey:kAutoupdateStatusVersion];
|
| + } else if (status == kAutoupdateInstallFailed) {
|
| + successful_ = NO;
|
| + installs_ = 0;
|
| + }
|
| }
|
|
|
| // Confirm we look like callbacks with nil NSNotifications
|
| @@ -114,12 +150,16 @@
|
| Method loadMethod_ = class_getInstanceMethod([KeystoneGlue class], lks);
|
| method_setImplementation(loadMethod_, newLoadImp_);
|
|
|
| + // Dump any existing KeystoneGlue shared instance so that a new one can be
|
| + // created with the mocked methods.
|
| + [KeystoneGlue releaseDefaultKeystoneGlue];
|
| KeystoneGlue *glue = [KeystoneGlue defaultKeystoneGlue];
|
| ASSERT_TRUE(glue);
|
|
|
| // Fix back up the class to the way we found it.
|
| method_setImplementation(infoMethod_, oldInfoImp_);
|
| method_setImplementation(loadMethod_, oldLoadImp_);
|
| + [KeystoneGlue releaseDefaultKeystoneGlue];
|
| }
|
|
|
| TEST_F(KeystoneGlueTest, BasicUse) {
|
| @@ -136,14 +176,10 @@
|
| ASSERT_TRUE([glue hasATimer]);
|
| [glue stopTimer];
|
|
|
| - ASSERT_TRUE(![glue checkForUpdate:glue] && ![glue startUpdate:glue]);
|
| -
|
| // Brief exercise of callbacks
|
| [glue addFakeRegistration];
|
| - ASSERT_TRUE([glue checkForUpdate:glue]);
|
| - [glue checkComplete:nil];
|
| - ASSERT_TRUE([glue startUpdate:glue]);
|
| - [glue startUpdateComplete:nil];
|
| + [glue checkForUpdate];
|
| + [glue installUpdate];
|
| ASSERT_TRUE([glue confirmCallbacks]);
|
| }
|
|
|
|
|
| Property changes on: chrome/app/keystone_glue_unittest.mm
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|