mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-30 07:50:03 +00:00
Adding two unit test to make sure we don’t create sessions for the wrong timestamps
This commit is contained in:
@@ -21,12 +21,12 @@
|
||||
@implementation BITMetricsManagerTests
|
||||
|
||||
- (void)setUp {
|
||||
[super setUp];
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
[super setUp];
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
- (void)tearDown {
|
||||
[super tearDown];
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testMetricsManagerGetsInstantiated {
|
||||
@@ -92,9 +92,9 @@
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
OCMExpect([mockChannel enqueueTelemetryItem:[OCMArg checkWithBlock:^BOOL(NSObject *value)
|
||||
{
|
||||
return [value isKindOfClass:[BITSessionStateData class]];
|
||||
}]]);
|
||||
{
|
||||
return [value isKindOfClass:[BITSessionStateData class]];
|
||||
}]]);
|
||||
[self.sut trackSessionWithState:BITSessionState_start];
|
||||
OCMVerifyAll(mockChannel);
|
||||
}
|
||||
@@ -109,7 +109,7 @@
|
||||
#pragma clang diagnostic ignored "-Wnonnull"
|
||||
self.sut = [[BITMetricsManager alloc] initWithChannel:nil telemetryContext:mockContext persistence:nil userDefaults:testUserDefaults];
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
|
||||
NSString *testSessionId = @"sessionId";
|
||||
|
||||
OCMExpect([mockContext setSessionId:testSessionId]);
|
||||
@@ -120,4 +120,87 @@
|
||||
OCMVerifyAll(mockContext);
|
||||
}
|
||||
|
||||
- (void)testNewSessionCreated {
|
||||
NSUserDefaults *testUserDefaults = [NSUserDefaults new];
|
||||
BITTelemetryContext *context = [BITTelemetryContext new];
|
||||
|
||||
BITChannel *channel = [BITChannel new];
|
||||
id mockChannel = OCMPartialMock(channel);
|
||||
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wnonnull"
|
||||
self.sut = [[BITMetricsManager alloc] initWithChannel:mockChannel telemetryContext:context persistence:nil userDefaults:testUserDefaults];
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
int sessionStartCount = 0;
|
||||
int sessionNotRenewedCount = 0;
|
||||
|
||||
for(int i = 0; i < 100; i++) {
|
||||
double randomOffset = (i%2 == 0) ? arc4random_uniform(1000 - 20 + 1) + 20 : arc4random_uniform(19 - 0 + 1) + 0;
|
||||
double backgroundtime = [[NSDate date] timeIntervalSince1970] - randomOffset;
|
||||
[testUserDefaults setDouble:backgroundtime forKey:@"BITApplicationDidEnterBackgroundTime"];
|
||||
|
||||
[self.sut startNewSessionIfNeeded];
|
||||
|
||||
NSLog(@"Test iteration %i", i);
|
||||
|
||||
|
||||
if(randomOffset >= 20.0) {
|
||||
NSLog(@"Calling OCMVerify for %f", randomOffset);
|
||||
OCMVerify([mockChannel enqueueTelemetryItem:anything()]);
|
||||
sessionStartCount +=1;
|
||||
}
|
||||
else {
|
||||
NSLog(@"Calling OCMReject for %f", randomOffset);
|
||||
// we cant OCMReject for the mockChannel as it will fail because enqueueTelemetryItem has been invoked before for all
|
||||
// randomOffset >= 20.
|
||||
sessionNotRenewedCount +=1;
|
||||
}
|
||||
}
|
||||
|
||||
// Ac we can't use OCMReject, at least verify the counts of the cases.
|
||||
XCTAssertEqual(sessionStartCount, 50);
|
||||
XCTAssertEqual(sessionNotRenewedCount, 50);
|
||||
}
|
||||
|
||||
- (void)testNewSessionNeverCreated {
|
||||
NSUserDefaults *testUserDefaults = [NSUserDefaults new];
|
||||
BITTelemetryContext *context = [BITTelemetryContext new];
|
||||
|
||||
BITChannel *channel = [BITChannel new];
|
||||
id mockChannel = OCMPartialMock(channel);
|
||||
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wnonnull"
|
||||
self.sut = [[BITMetricsManager alloc] initWithChannel:mockChannel telemetryContext:context persistence:nil userDefaults:testUserDefaults];
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
int sessionStartCount = 0;
|
||||
int sessionNotRenewedCount = 0;
|
||||
for(int i = 0; i < 100; i++) {
|
||||
double randomOffset = (i%2 == 0) ? arc4random_uniform(19 - 0 + 1) + 0 : arc4random_uniform(19 - 0 + 1) + 0;
|
||||
double backgroundtime = [[NSDate date] timeIntervalSince1970] - randomOffset;
|
||||
[testUserDefaults setDouble:backgroundtime forKey:@"BITApplicationDidEnterBackgroundTime"];
|
||||
|
||||
[self.sut startNewSessionIfNeeded];
|
||||
|
||||
NSLog(@"Test iteration %i", i);
|
||||
|
||||
if(randomOffset >= 20.0) {
|
||||
NSLog(@"Calling OCMVerify for %f", randomOffset);
|
||||
OCMVerify([mockChannel enqueueTelemetryItem:anything()]);
|
||||
sessionStartCount +=1;
|
||||
}
|
||||
else {
|
||||
NSLog(@"Calling OCMReject for %f", randomOffset);
|
||||
OCMReject([mockChannel enqueueTelemetryItem:anything()]);
|
||||
sessionNotRenewedCount +=1;
|
||||
}
|
||||
}
|
||||
|
||||
XCTAssertEqual(sessionStartCount, 0);
|
||||
XCTAssertEqual(sessionNotRenewedCount, 100);
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user