134 lines
5.0 KiB
Mathematica
134 lines
5.0 KiB
Mathematica
|
|
/**
|
||
|
|
* Copyright (c) 2015-present, 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.
|
||
|
|
*/
|
||
|
|
|
||
|
|
#import <XCTest/XCTest.h>
|
||
|
|
|
||
|
|
#import "FBIntegrationTestCase.h"
|
||
|
|
#import "FBExceptions.h"
|
||
|
|
#import "FBMacros.h"
|
||
|
|
#import "FBSession.h"
|
||
|
|
#import "FBXCodeCompatibility.h"
|
||
|
|
#import "FBTestMacros.h"
|
||
|
|
#import "FBUnattachedAppLauncher.h"
|
||
|
|
#import "XCUIApplication+FBHelpers.h"
|
||
|
|
#import "XCUIApplication.h"
|
||
|
|
|
||
|
|
@interface FBSession (Tests)
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
@interface FBSessionIntegrationTests : FBIntegrationTestCase
|
||
|
|
@property (nonatomic) FBSession *session;
|
||
|
|
@end
|
||
|
|
|
||
|
|
|
||
|
|
static NSString *const SETTINGS_BUNDLE_ID = @"com.apple.Preferences";
|
||
|
|
|
||
|
|
@implementation FBSessionIntegrationTests
|
||
|
|
|
||
|
|
- (void)setUp
|
||
|
|
{
|
||
|
|
[super setUp];
|
||
|
|
[self launchApplication];
|
||
|
|
XCUIApplication *app = [[XCUIApplication alloc] initWithBundleIdentifier:self.testedApplication.bundleID];
|
||
|
|
self.session = [FBSession initWithApplication:app];
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)tearDown
|
||
|
|
{
|
||
|
|
[self.session kill];
|
||
|
|
[super tearDown];
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)testSettingsAppCanBeOpenedInScopeOfTheCurrentSession
|
||
|
|
{
|
||
|
|
XCUIApplication *testedApp = XCUIApplication.fb_activeApplication;
|
||
|
|
[self.session launchApplicationWithBundleId:SETTINGS_BUNDLE_ID
|
||
|
|
shouldWaitForQuiescence:nil
|
||
|
|
arguments:nil
|
||
|
|
environment:nil];
|
||
|
|
FBAssertWaitTillBecomesTrue([self.session.activeApplication.bundleID isEqualToString:SETTINGS_BUNDLE_ID]);
|
||
|
|
XCTAssertEqual([self.session applicationStateWithBundleId:SETTINGS_BUNDLE_ID], 4);
|
||
|
|
[self.session activateApplicationWithBundleId:testedApp.bundleID];
|
||
|
|
FBAssertWaitTillBecomesTrue([self.session.activeApplication.bundleID isEqualToString: testedApp.bundleID]);
|
||
|
|
XCTAssertEqual([self.session applicationStateWithBundleId:testedApp.bundleID], 4);
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)testSettingsAppCanBeReopenedInScopeOfTheCurrentSession
|
||
|
|
{
|
||
|
|
XCUIApplication *systemApp = self.springboard;
|
||
|
|
[self.session launchApplicationWithBundleId:SETTINGS_BUNDLE_ID
|
||
|
|
shouldWaitForQuiescence:nil
|
||
|
|
arguments:nil
|
||
|
|
environment:nil];
|
||
|
|
FBAssertWaitTillBecomesTrue([self.session.activeApplication.bundleID isEqualToString:SETTINGS_BUNDLE_ID]);
|
||
|
|
XCTAssertTrue([self.session terminateApplicationWithBundleId:SETTINGS_BUNDLE_ID]);
|
||
|
|
FBAssertWaitTillBecomesTrue([systemApp.bundleID isEqualToString:self.session.activeApplication.bundleID]);
|
||
|
|
[self.session launchApplicationWithBundleId:SETTINGS_BUNDLE_ID
|
||
|
|
shouldWaitForQuiescence:nil
|
||
|
|
arguments:nil
|
||
|
|
environment:nil];
|
||
|
|
FBAssertWaitTillBecomesTrue([self.session.activeApplication.bundleID isEqualToString:SETTINGS_BUNDLE_ID]);
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)testMainAppCanBeReactivatedInScopeOfTheCurrentSession
|
||
|
|
{
|
||
|
|
XCUIApplication *testedApp = XCUIApplication.fb_activeApplication;
|
||
|
|
[self.session launchApplicationWithBundleId:SETTINGS_BUNDLE_ID
|
||
|
|
shouldWaitForQuiescence:nil
|
||
|
|
arguments:nil
|
||
|
|
environment:nil];
|
||
|
|
FBAssertWaitTillBecomesTrue([self.session.activeApplication.bundleID isEqualToString:SETTINGS_BUNDLE_ID]);
|
||
|
|
[self.session activateApplicationWithBundleId:testedApp.bundleID];
|
||
|
|
FBAssertWaitTillBecomesTrue([self.session.activeApplication.bundleID isEqualToString:testedApp.bundleID]);
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)testMainAppCanBeRestartedInScopeOfTheCurrentSession
|
||
|
|
{
|
||
|
|
XCUIApplication *systemApp = self.springboard;
|
||
|
|
XCUIApplication *testedApp = [[XCUIApplication alloc] initWithBundleIdentifier:self.testedApplication.bundleID];
|
||
|
|
[self.session terminateApplicationWithBundleId:testedApp.bundleID];
|
||
|
|
FBAssertWaitTillBecomesTrue([self.session.activeApplication.bundleID isEqualToString:systemApp.bundleID]);
|
||
|
|
[self.session launchApplicationWithBundleId:testedApp.bundleID
|
||
|
|
shouldWaitForQuiescence:nil
|
||
|
|
arguments:nil
|
||
|
|
environment:nil];
|
||
|
|
FBAssertWaitTillBecomesTrue([self.session.activeApplication.bundleID isEqualToString:testedApp.bundleID]);
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)testLaunchUnattachedApp
|
||
|
|
{
|
||
|
|
[FBUnattachedAppLauncher launchAppWithBundleId:SETTINGS_BUNDLE_ID];
|
||
|
|
[self.session kill];
|
||
|
|
XCTAssertEqualObjects(SETTINGS_BUNDLE_ID, XCUIApplication.fb_activeApplication.bundleID);
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)testAppWithInvalidBundleIDCannotBeStarted
|
||
|
|
{
|
||
|
|
XCUIApplication *testedApp = [[XCUIApplication alloc] initWithBundleIdentifier:@"yolo"];
|
||
|
|
@try {
|
||
|
|
[testedApp launch];
|
||
|
|
XCTFail(@"An exception is expected to be thrown");
|
||
|
|
} @catch (NSException *exception) {
|
||
|
|
XCTAssertEqualObjects(FBApplicationMissingException, exception.name);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
- (void)testAppWithInvalidBundleIDCannotBeActivated
|
||
|
|
{
|
||
|
|
XCUIApplication *testedApp = [[XCUIApplication alloc] initWithBundleIdentifier:@"yolo"];
|
||
|
|
@try {
|
||
|
|
[testedApp activate];
|
||
|
|
XCTFail(@"An exception is expected to be thrown");
|
||
|
|
} @catch (NSException *exception) {
|
||
|
|
XCTAssertEqualObjects(FBApplicationMissingException, exception.name);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@end
|