More unit tests

And minor refactoring of method name
This commit is contained in:
Andreas Linde 2013-03-18 01:36:38 +01:00 committed by Stephan Diederich
parent 8c6adec552
commit 72d203d00f
3 changed files with 134 additions and 3 deletions

View File

@ -199,7 +199,7 @@
#pragma mark - Time
- (BOOL)shouldCheckForUpdates {
- (BOOL)shouldAutoCheckForUpdates {
BOOL checkForUpdate = NO;
switch (self.updateSetting) {
@ -275,7 +275,7 @@
self.checkInProgress = YES;
// do we need to update?
if (!manual && ![self shouldCheckForUpdates]) {
if (!manual && ![self shouldAutoCheckForUpdates]) {
BITHockeyLog(@"INFO: Update check not needed right now");
self.checkInProgress = NO;
return;
@ -342,7 +342,7 @@
self.lastCheck = [NSDate distantPast];
}
if ([self isCheckingForUpdateOnLaunch] && [self shouldCheckForUpdates]) {
if ([self isCheckingForUpdateOnLaunch] && [self shouldAutoCheckForUpdates]) {
[self performSelector:@selector(checkForUpdateDelayed) withObject:nil afterDelay:1.0f];
}

View File

@ -52,6 +52,7 @@
@property (nonatomic, assign) NSLocale *currentLocale;
@property (nonatomic, assign) NSUserDefaults *userDefaults;
- (BOOL)shouldAutoCheckForUpdates;
- (BOOL)hasNewVersion:(NSDictionary *)dictionary;
- (BOOL)processStoreResponseWithString:(NSString *)responseString;
- (void)checkForUpdateDelayed;

View File

@ -69,6 +69,104 @@
#pragma mark - Time
- (void)testUpdateCheckDailyFirstTimeEver {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
_storeUpdateManager.userDefaults = mockUserDefaults;
[self startManager];
BOOL result = [_storeUpdateManager shouldAutoCheckForUpdates];
STAssertTrue(result, @"Checking daily first time ever");
}
- (void)testUpdateCheckDailyFirstTimeTodayLastCheckPreviousDay {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
_storeUpdateManager.userDefaults = mockUserDefaults;
_storeUpdateManager.lastCheck = [NSDate dateWithTimeIntervalSinceNow:-(60*60*24)];
[self startManager];
BOOL result = [_storeUpdateManager shouldAutoCheckForUpdates];
STAssertTrue(result, @"Checking daily first time today with last check done previous day");
}
- (void)testUpdateCheckDailySecondTimeOfTheDay {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
_storeUpdateManager.userDefaults = mockUserDefaults;
_storeUpdateManager.lastCheck = [NSDate date];
[self startManager];
BOOL result = [_storeUpdateManager shouldAutoCheckForUpdates];
STAssertFalse(result, @"Checking daily second time of the day");
}
- (void)testUpdateCheckWeeklyFirstTimeEver {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
_storeUpdateManager.userDefaults = mockUserDefaults;
_storeUpdateManager.updateSetting = BITStoreUpdateCheckWeekly;
[self startManager];
BOOL result = [_storeUpdateManager shouldAutoCheckForUpdates];
STAssertTrue(result, @"Checking weekly first time ever");
}
- (void)testUpdateCheckWeeklyFirstTimeTodayLastCheckPreviousWeek {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
_storeUpdateManager.userDefaults = mockUserDefaults;
_storeUpdateManager.updateSetting = BITStoreUpdateCheckWeekly;
_storeUpdateManager.lastCheck = [NSDate dateWithTimeIntervalSinceNow:-(60*60*24*7)];
[self startManager];
BOOL result = [_storeUpdateManager shouldAutoCheckForUpdates];
STAssertTrue(result, @"Checking weekly first time after one week");
}
- (void)testUpdateCheckWeeklyFirstTimeFiveDaysAfterPreviousCheck {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
_storeUpdateManager.userDefaults = mockUserDefaults;
_storeUpdateManager.updateSetting = BITStoreUpdateCheckWeekly;
_storeUpdateManager.lastCheck = [NSDate dateWithTimeIntervalSinceNow:-(60*60*24*5)];
[self startManager];
BOOL result = [_storeUpdateManager shouldAutoCheckForUpdates];
STAssertFalse(result, @"Checking weekly first time five days after previous check");
}
- (void)testUpdateCheckManuallyFirstTimeEver {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
_storeUpdateManager.userDefaults = mockUserDefaults;
_storeUpdateManager.updateSetting = BITStoreUpdateCheckManually;
[self startManager];
BOOL result = [_storeUpdateManager shouldAutoCheckForUpdates];
STAssertFalse(result, @"Checking manually first time ever");
}
- (void)testUpdateCheckManuallyFirstTimeTodayLastCheckDonePreviousDay {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
_storeUpdateManager.userDefaults = mockUserDefaults;
_storeUpdateManager.updateSetting = BITStoreUpdateCheckManually;
_storeUpdateManager.lastCheck = [NSDate dateWithTimeIntervalSinceNow:-(60*60*24)];
[self startManager];
BOOL result = [_storeUpdateManager shouldAutoCheckForUpdates];
STAssertFalse(result, @"Checking manually first time ever");
}
#pragma mark - JSON Response Processing
@ -179,4 +277,36 @@
STAssertFalse(result, @"There is no udpate available");
}
- (void)testReportedVersionIsBeingIgnored {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
[given([mockUserDefaults objectForKey:@"BITStoreUpdateLastStoreVersion"]) willReturn:@"4.1.1"];
[given([mockUserDefaults objectForKey:@"BITStoreUpdateLastUUID"]) willReturn:@""];
[given([mockUserDefaults objectForKey:@"BITStoreUpdateIgnoredVersion"]) willReturn:@"4.1.2"];
_storeUpdateManager.userDefaults = mockUserDefaults;
[self startManager];
NSDictionary *json = [self jsonFromFixture:@"StoreBundleIdentifierKnown"];
BOOL result = [_storeUpdateManager hasNewVersion:json];
STAssertFalse(result, @"The newer version is being ignored");
}
- (void)testReportedVersionIsNewerThanTHeIgnoredVersion {
NSUserDefaults *mockUserDefaults = mock([NSUserDefaults class]);
[given([mockUserDefaults objectForKey:@"BITStoreUpdateLastStoreVersion"]) willReturn:@"4.1.1"];
[given([mockUserDefaults objectForKey:@"BITStoreUpdateLastUUID"]) willReturn:@""];
[given([mockUserDefaults objectForKey:@"BITStoreUpdateIgnoredVersion"]) willReturn:@"4.1.1"];
_storeUpdateManager.userDefaults = mockUserDefaults;
[self startManager];
NSDictionary *json = [self jsonFromFixture:@"StoreBundleIdentifierKnown"];
BOOL result = [_storeUpdateManager hasNewVersion:json];
STAssertTrue(result, @"The newer version is not ignored");
}
@end