Skip to content

Commit

Permalink
Merge pull request #9 from Iterable/feature/ITBL-5408-swift-sdk-refac…
Browse files Browse the repository at this point in the history
…toring

[ITBL-5408]-swift-sdk-static-calls
  • Loading branch information
tapashmajumder committed Jul 11, 2018
2 parents 49f1d30 + ba2ef37 commit ff7688b
Show file tree
Hide file tree
Showing 23 changed files with 1,788 additions and 1,297 deletions.
Expand Up @@ -13,7 +13,7 @@
@import IterableAppExtensions;

static CGFloat const IterableNotificationCenterRequestDelay = 0.05;
static CGFloat const IterableNotificationCenterExpectationTimeout = 5.0;
static CGFloat const IterableNotificationCenterExpectationTimeout = 15.0;

@interface NotificationExtensionTests : XCTestCase

Expand Down
@@ -1,6 +1,4 @@
//
// IterableAPITests.m
// Iterable-iOS-SDK
//
// Created by Ilya Brin on 5/25/16.
// Copyright © 2016 Iterable. All rights reserved.
Expand All @@ -18,10 +16,10 @@

static CGFloat const IterableNetworkResponseExpectationTimeout = 5.0;

@interface IterableAPITests : XCTestCase
@interface IterableAPIImplementationTests : XCTestCase
@end

@implementation IterableAPITests
@implementation IterableAPIImplementationTests

NSString *redirectRequest = @"https://httpbin.org/redirect-to?url=http://example.com";
NSString *exampleUrl = @"http://example.com";
Expand All @@ -33,8 +31,7 @@ @implementation IterableAPITests

- (void)setUp {
[super setUp];

[IterableAPI initializeWithApiKey:@""];
[IterableAPIImplementation initializeWithApiKey:@""];
}

- (void)tearDown {
Expand All @@ -43,8 +40,8 @@ - (void)tearDown {
}

- (void)testPushServicePlatformToString {
XCTAssertEqualObjects(@"APNS", [IterableAPI pushServicePlatformToString:APNS]);
XCTAssertEqualObjects(@"APNS_SANDBOX", [IterableAPI pushServicePlatformToString:APNS_SANDBOX]);
XCTAssertEqualObjects(@"APNS", [IterableAPIImplementation pushServicePlatformToString:APNS]);
XCTAssertEqualObjects(@"APNS_SANDBOX", [IterableAPIImplementation pushServicePlatformToString:APNS_SANDBOX]);
}

- (void)testDictToJson {
Expand All @@ -65,7 +62,7 @@ - (void)testDictToJson {
}
}
};
NSString *result = [IterableAPI dictToJson:args];
NSString *result = [IterableAPIImplementation dictToJson:args];
NSData *data = [result dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
XCTAssertEqualObjects(args, json);
Expand All @@ -81,12 +78,12 @@ - (void)testDictToJson {
}

- (void)testUserInterfaceIdionEnumToString {
XCTAssertEqualObjects(@"Phone", [IterableAPI userInterfaceIdiomEnumToString:UIUserInterfaceIdiomPhone]);
XCTAssertEqualObjects(@"Pad", [IterableAPI userInterfaceIdiomEnumToString:UIUserInterfaceIdiomPad]);
XCTAssertEqualObjects(@"Phone", [IterableAPIImplementation userInterfaceIdiomEnumToString:UIUserInterfaceIdiomPhone]);
XCTAssertEqualObjects(@"Pad", [IterableAPIImplementation userInterfaceIdiomEnumToString:UIUserInterfaceIdiomPad]);
// we don't care about TVs for now
XCTAssertEqualObjects(@"Unspecified", [IterableAPI userInterfaceIdiomEnumToString:UIUserInterfaceIdiomTV]);
XCTAssertEqualObjects(@"Unspecified", [IterableAPI userInterfaceIdiomEnumToString:UIUserInterfaceIdiomUnspecified]);
XCTAssertEqualObjects(@"Unspecified", [IterableAPI userInterfaceIdiomEnumToString:192387]);
XCTAssertEqualObjects(@"Unspecified", [IterableAPIImplementation userInterfaceIdiomEnumToString:UIUserInterfaceIdiomTV]);
XCTAssertEqualObjects(@"Unspecified", [IterableAPIImplementation userInterfaceIdiomEnumToString:UIUserInterfaceIdiomUnspecified]);
XCTAssertEqualObjects(@"Unspecified", [IterableAPIImplementation userInterfaceIdiomEnumToString:192387]);
}

- (void)testUniversalDeeplinkRewrite {
Expand All @@ -97,7 +94,7 @@ - (void)testUniversalDeeplinkRewrite {
XCTAssertTrue(NSThread.isMainThread);
[expectation fulfill];
};
[IterableAPI getAndTrackDeeplink:iterableLink callbackBlock:aBlock];
[IterableAPIImplementation getAndTrackDeeplink:iterableLink callbackBlock:aBlock];

[self waitForExpectationsWithTimeout:IterableNetworkResponseExpectationTimeout handler:nil];
}
Expand All @@ -109,7 +106,7 @@ - (void)testUniversalDeeplinkNoRewrite {
XCTAssertEqualObjects(iterableNoRewriteURL, redirectUrl);
[expectation fulfill];
};
[IterableAPI getAndTrackDeeplink:normalLink callbackBlock:uBlock];
[IterableAPIImplementation getAndTrackDeeplink:normalLink callbackBlock:uBlock];

[self waitForExpectationsWithTimeout:IterableNetworkResponseExpectationTimeout handler:nil];
}
Expand All @@ -126,9 +123,9 @@ - (void)testHandleUniversalLinkRewrite {

IterableConfig *config = [[IterableConfig alloc] init];
config.urlDelegate = urlDelegateMock;
[IterableAPI initializeWithApiKey:@"" config:config];
[IterableAPIImplementation initializeWithApiKey:@"" config:config];
NSURL *iterableLink = [NSURL URLWithString:iterableRewriteURL];
[IterableAPI handleUniversalLink:iterableLink];
[IterableAPIImplementation handleUniversalLink:iterableLink];

[self waitForExpectationsWithTimeout:IterableNetworkResponseExpectationTimeout handler:nil];
}
Expand All @@ -141,12 +138,12 @@ - (void)testDeeplinkAttributionInfo {
XCTestExpectation *expectation = [self expectationWithDescription:@"High Expectations"];
NSURL *normalLink = [NSURL URLWithString:iterableRewriteURL];
ITEActionBlock uBlock = ^(NSString* redirectUrl) {
XCTAssertEqualObjects(IterableAPI.sharedInstance.attributionInfo.campaignId, campaignId);
XCTAssertEqualObjects(IterableAPI.sharedInstance.attributionInfo.templateId, templateId);
XCTAssertEqualObjects(IterableAPI.sharedInstance.attributionInfo.messageId, messageId);
XCTAssertEqualObjects(IterableAPIImplementation.sharedInstance.attributionInfo.campaignId, campaignId);
XCTAssertEqualObjects(IterableAPIImplementation.sharedInstance.attributionInfo.templateId, templateId);
XCTAssertEqualObjects(IterableAPIImplementation.sharedInstance.attributionInfo.messageId, messageId);
[expectation fulfill];
};
[IterableAPI getAndTrackDeeplink:normalLink callbackBlock:uBlock];
[IterableAPIImplementation getAndTrackDeeplink:normalLink callbackBlock:uBlock];

[self waitForExpectationsWithTimeout:IterableNetworkResponseExpectationTimeout handler:nil];
}
Expand All @@ -159,7 +156,7 @@ - (void)testNoURLRedirect {
XCTAssertNotEqual(exampleUrl, redirectUrl);
XCTAssertEqualObjects(redirectRequest, redirectUrl);
};
[IterableAPI getAndTrackDeeplink:redirectLink callbackBlock:redirectBlock];
[IterableAPIImplementation getAndTrackDeeplink:redirectLink callbackBlock:redirectBlock];

[self waitForExpectationsWithTimeout:IterableNetworkResponseExpectationTimeout handler:nil];
}
Expand All @@ -172,7 +169,7 @@ - (void)testUniversalDeeplinkHttp {
XCTAssertEqualObjects(googleHttps, redirectUrl);
XCTAssertNotEqual(googleHttp, redirectUrl);
};
[IterableAPI getAndTrackDeeplink:googleHttpLink callbackBlock:googleHttpBlock];
[IterableAPIImplementation getAndTrackDeeplink:googleHttpLink callbackBlock:googleHttpBlock];

[self waitForExpectationsWithTimeout:IterableNetworkResponseExpectationTimeout handler:nil];
}
Expand All @@ -186,13 +183,13 @@ - (void)testUniversalDeeplinkHttps {
[expectation fulfill];
XCTAssertEqualObjects(googleHttps, redirectUrl);
};
[IterableAPI getAndTrackDeeplink:googleHttpsLink callbackBlock:googleHttpsBlock];
[IterableAPIImplementation getAndTrackDeeplink:googleHttpsLink callbackBlock:googleHttpsBlock];

[self waitForExpectationsWithTimeout:IterableNetworkResponseExpectationTimeout handler:nil];
}

- (void)testURLQueryParamRewrite {
[IterableAPI initializeWithApiKey:@""];
[IterableAPIImplementation initializeWithApiKey:@""];

NSCharacterSet* set = [NSCharacterSet URLQueryAllowedCharacterSet];

Expand All @@ -211,19 +208,19 @@ - (void)testURLQueryParamRewrite {
}

//Test full set of possible URLQueryAllowedCharacterSet characters
NSString* encodedSet = [[IterableAPI sharedInstance] encodeURLParam:strSet];
NSString* encodedSet = [[IterableAPIImplementation sharedInstance] encodeURLParam:strSet];
XCTAssertNotEqual(encodedSet, strSet);
XCTAssert([encodedSet isEqualToString:@"!$&'()*%2B,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~"]);

NSString* encoded = [[IterableAPI sharedInstance] encodeURLParam:@"you+me@iterable.com"];
NSString* encoded = [[IterableAPIImplementation sharedInstance] encodeURLParam:@"you+me@iterable.com"];
XCTAssertNotEqual(encoded, @"you+me@iterable.com");
XCTAssert([encoded isEqualToString:@"you%2Bme@iterable.com"]);

NSString* emptySet = [[IterableAPI sharedInstance] encodeURLParam:@""];
NSString* emptySet = [[IterableAPIImplementation sharedInstance] encodeURLParam:@""];
XCTAssertEqual(emptySet, @"");
XCTAssert([emptySet isEqualToString:@""]);

NSString* nilSet = [[IterableAPI sharedInstance] encodeURLParam:nil];
NSString* nilSet = [[IterableAPIImplementation sharedInstance] encodeURLParam:nil];
XCTAssertEqualObjects(nilSet, nil);
}

Expand All @@ -245,27 +242,27 @@ - (void)testRegisterToken {

IterableConfig *config = [[IterableConfig alloc] init];
config.pushIntegrationName = @"pushIntegration";
[IterableAPI initializeWithApiKey:@"apiKey" config:config];
[[IterableAPI sharedInstance] setEmail:@"user@example.com"];
[[IterableAPI sharedInstance] registerToken:[@"token" dataUsingEncoding:kCFStringEncodingUTF8]];
[IterableAPIImplementation initializeWithApiKey:@"apiKey" config:config];
[[IterableAPIImplementation sharedInstance] setEmail:@"user@example.com"];
[[IterableAPIImplementation sharedInstance] registerToken:[@"token" dataUsingEncoding:kCFStringEncodingUTF8]];

[self waitForExpectations:@[expectation] timeout:5.0];
[OHHTTPStubs removeAllStubs];
}

- (void)testEmailUserIdPersistence {
[IterableAPI initializeWithApiKey:@"apiKey"];
[[IterableAPI sharedInstance] setEmail:@"test@email.com"];
[IterableAPIImplementation initializeWithApiKey:@"apiKey"];
[[IterableAPIImplementation sharedInstance] setEmail:@"test@email.com"];

[IterableAPI initializeWithApiKey:@"apiKey"];
XCTAssertEqualObjects([IterableAPI sharedInstance].email, @"test@email.com");
XCTAssertNil([IterableAPI sharedInstance].userId);
[IterableAPIImplementation initializeWithApiKey:@"apiKey"];
XCTAssertEqualObjects([IterableAPIImplementation sharedInstance].email, @"test@email.com");
XCTAssertNil([IterableAPIImplementation sharedInstance].userId);

[[IterableAPI sharedInstance] setUserId:@"testUserId"];
[[IterableAPIImplementation sharedInstance] setUserId:@"testUserId"];

[IterableAPI initializeWithApiKey:@"apiKey"];
XCTAssertEqualObjects([IterableAPI sharedInstance].userId, @"testUserId");
XCTAssertNil([IterableAPI sharedInstance].email);
[IterableAPIImplementation initializeWithApiKey:@"apiKey"];
XCTAssertEqualObjects([IterableAPIImplementation sharedInstance].userId, @"testUserId");
XCTAssertNil([IterableAPIImplementation sharedInstance].email);
}


Expand Down
42 changes: 21 additions & 21 deletions Tests/swift-sdk-objc-tests/IterableAPIResponseTests.m
Expand Up @@ -23,7 +23,7 @@ @implementation IterableAPIResponseTests

- (void)setUp {
[super setUp];
[IterableAPI initializeWithApiKey:@""];
[IterableAPIImplementation initializeWithApiKey:@""];
}

- (void)tearDown {
Expand Down Expand Up @@ -56,8 +56,8 @@ - (void)testResponseCode200 {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onSuccess is called"];

NSURLRequest *request = [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPI sharedInstance] sendRequest:request onSuccess:^(NSDictionary * _Nonnull data) {
NSURLRequest *request = [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:^(NSDictionary * _Nonnull data) {
[expectation fulfill];
XCTAssert([data isEqualToDictionary:responseData]);
} onFailure:nil];
Expand All @@ -69,8 +69,8 @@ - (void)testResponseCode200WithNoData {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onFailure is called"];

NSURLRequest *request = [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPI sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
NSURLRequest *request = [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[expectation fulfill];
XCTAssertEqualObjects(reason, @"No data received");
}];
Expand All @@ -82,8 +82,8 @@ - (void)testResponseCode200WithInvalidJson {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onFailure is called"];

NSURLRequest *request = [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPI sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
NSURLRequest *request = [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[expectation fulfill];
XCTAssert([reason containsString:@"Could not parse json"]);
}];
Expand All @@ -95,8 +95,8 @@ - (void)testResponseCode400WithoutMessage {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onFailure is called"];

NSURLRequest *request = [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPI sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
NSURLRequest *request = [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[expectation fulfill];
XCTAssert([reason containsString:@"Invalid Request"]);
}];
Expand All @@ -108,8 +108,8 @@ - (void)testResponseCode400WithMessage {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onFailure is called"];

NSURLRequest *request = [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPI sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
NSURLRequest *request = [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[expectation fulfill];
XCTAssertEqualObjects(reason, @"Test error");
}];
Expand All @@ -121,8 +121,8 @@ - (void)testResponseCode401 {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onFailure is called"];

NSURLRequest *request = [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPI sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
NSURLRequest *request = [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[expectation fulfill];
XCTAssertEqualObjects(reason, @"Invalid API Key");
}];
Expand All @@ -134,8 +134,8 @@ - (void)testResponseCode500 {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onFailure is called"];

NSURLRequest *request = [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPI sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
NSURLRequest *request = [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[expectation fulfill];
XCTAssertEqualObjects(reason, @"Internal Server Error");
}];
Expand All @@ -147,8 +147,8 @@ - (void)testNon200ResponseCode {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onFailure is called"];

NSURLRequest *request = [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPI sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
NSURLRequest *request = [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[expectation fulfill];
XCTAssert([reason containsString:@"Received non-200 response"]);
}];
Expand All @@ -165,8 +165,8 @@ - (void)testNoNetworkResponse {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onFailure is called"];

NSURLRequest *request = [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPI sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
NSURLRequest *request = [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[expectation fulfill];
XCTAssert([reason containsString:@"NSURLErrorDomain"]);
}];
Expand All @@ -183,9 +183,9 @@ - (void)testNetworkTimeoutResponse {

XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"onFailure is called"];

NSMutableURLRequest *request = (NSMutableURLRequest *) [[IterableAPI sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
NSMutableURLRequest *request = (NSMutableURLRequest *) [[IterableAPIImplementation sharedInstance] createPostRequestForAction:@"" withArgs:@{}];
request.timeoutInterval = 0.01;
[[IterableAPI sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[[IterableAPIImplementation sharedInstance] sendRequest:request onSuccess:nil onFailure:^(NSString * _Nonnull reason, NSData * _Nullable data) {
[expectation fulfill];
XCTAssert([reason containsString:@"timed out"]);
}];
Expand Down

0 comments on commit ff7688b

Please sign in to comment.