BoltsTests/AppLinkReturnToRefererViewTests.m (64 lines of code) (raw):
/*
* Copyright (c) 2014, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
@import XCTest;
#import <Bolts/Bolts.h>
static NSString *const BFURLWithRefererData = @"bolts://?foo=bar&al_applink_data=%7B%22a%22%3A%22b%22%2C%22user_agent%22%3A%22Bolts%20iOS%201.0.0%22%2C%22target_url%22%3A%22http%3A%5C%2F%5C%2Fwww.example.com%5C%2Fpath%3Fbaz%3Dbat%22%2C%22referer_app_link%22%3A%7B%22app_name%22%3A%22Facebook%22%2C%22url%22%3A%22fb%3A%5C%2F%5C%2Fsomething%5C%2F%22%7D%7D";
static NSString *const BFURLWithRefererUrlNoName = @"bolts://?foo=bar&al_applink_data=%7B%22a%22%3A%22b%22%2C%22user_agent%22%3A%22Bolts%20iOS%201.0.0%22%2C%22target_url%22%3A%22http%3A%5C%2F%5C%2Fwww.example.com%5C%2Fpath%3Fbaz%3Dbat%22%2C%22referer_app_link%22%3A%7B%22url%22%3A%22fb%3A%5C%2F%5C%2Fsomething%5C%2F%22%7D%7D";
static NSString *const BFURLWithRefererNameNoUrl = @"bolts://?foo=bar&al_applink_data=%7B%22a%22%3A%22b%22%2C%22user_agent%22%3A%22Bolts%20iOS%201.0.0%22%2C%22target_url%22%3A%22http%3A%5C%2F%5C%2Fwww.example.com%5C%2Fpath%3Fbaz%3Dbat%22%2C%22referer_app_link%22%3A%7B%22app_name%22%3A%22Facebook%22%7D%7D";
@interface AppLinkReturnToRefererViewTests : XCTestCase
@end
@implementation AppLinkReturnToRefererViewTests
- (void)testInitReturnsValidView {
BFAppLinkReturnToRefererView *view = [[BFAppLinkReturnToRefererView alloc] init];
XCTAssert(view);
}
- (void)testNoRefererDataResultsInZeroHeight {
BFAppLinkReturnToRefererView *view = [[BFAppLinkReturnToRefererView alloc] init];
CGSize sizeThatFits = [view sizeThatFits:CGSizeMake(100.0, 100.0)];
XCTAssertEqualWithAccuracy(0.0, sizeThatFits.height, FLT_EPSILON);
}
- (void)testNoRefererNameResultsInZeroHeight {
NSURL *url = [NSURL URLWithString:BFURLWithRefererUrlNoName];
BFAppLink *appLink = [[BFURL URLWithURL:url] appLinkReferer];
BFAppLinkReturnToRefererView *view = [[BFAppLinkReturnToRefererView alloc] init];
view.refererAppLink = appLink;
CGSize sizeThatFits = [view sizeThatFits:CGSizeMake(100.0, 100.0)];
XCTAssertEqualWithAccuracy(0.0, sizeThatFits.height, FLT_EPSILON);
}
- (void)testNoRefererUrlResultsInZeroHeight {
NSURL *url = [NSURL URLWithString:BFURLWithRefererNameNoUrl];
BFAppLink *appLink = [[BFURL URLWithURL:url] appLinkReferer];
BFAppLinkReturnToRefererView *view = [[BFAppLinkReturnToRefererView alloc] init];
view.refererAppLink = appLink;
CGSize sizeThatFits = [view sizeThatFits:CGSizeMake(100.0, 100.0)];
XCTAssertEqualWithAccuracy(0.0, sizeThatFits.height, FLT_EPSILON);
}
- (void)testValidRefererDataResultsInNonZeroSizeThatFits {
NSURL *url = [NSURL URLWithString:BFURLWithRefererData];
BFAppLink *appLink = [[BFURL URLWithURL:url] appLinkReferer];
BFAppLinkReturnToRefererView *view = [[BFAppLinkReturnToRefererView alloc] init];
view.refererAppLink = appLink;
CGSize sizeThatFits = [view sizeThatFits:CGSizeMake(100.0, 100.0)];
XCTAssert(sizeThatFits.height > 0.0);
XCTAssert(sizeThatFits.width > 0.0);
}
- (void)testIncludesStatusBarResultsInLargerHeight {
NSURL *url = [NSURL URLWithString:BFURLWithRefererData];
BFAppLink *appLink = [[BFURL URLWithURL:url] appLinkReferer];
BFAppLinkReturnToRefererView *view = [[BFAppLinkReturnToRefererView alloc] init];
view.refererAppLink = appLink;
view.includeStatusBarInSize = BFIncludeStatusBarInSizeNever;
CGSize sizeThatFitsNotIncludingStatusBar = [view sizeThatFits:CGSizeMake(100.0, 100.0)];
view.includeStatusBarInSize = BFIncludeStatusBarInSizeAlways;
CGSize sizeThatFitsIncludingStatusBar = [view sizeThatFits:CGSizeMake(100.0, 100.0)];
XCTAssert(sizeThatFitsIncludingStatusBar.height > sizeThatFitsNotIncludingStatusBar.height);
}
- (void)testNotIncludingStatusBarResultsInSmallerHeight {
NSURL *url = [NSURL URLWithString:BFURLWithRefererData];
BFAppLink *appLink = [[BFURL URLWithURL:url] appLinkReferer];
BFAppLinkReturnToRefererView *view = [[BFAppLinkReturnToRefererView alloc] init];
view.refererAppLink = appLink;
CGSize sizeThatFitsIncludingStatusBar = [view sizeThatFits:CGSizeMake(100.0, 100.0)];
view.includeStatusBarInSize = BFIncludeStatusBarInSizeNever;
CGSize sizeThatFitsNotIncludingStatusBar = [view sizeThatFits:CGSizeMake(100.0, 100.0)];
XCTAssert(sizeThatFitsIncludingStatusBar.height > sizeThatFitsNotIncludingStatusBar.height);
}
@end