12a38a11eSExponent GitHub Bot// Copyright 2015-present 650 Industries. All rights reserved.
22a38a11eSExponent GitHub Bot
3d5e9e21bSBen Roth#import "ExpoKit.h"
4d5e9e21bSBen Roth#import "EXRootViewController.h"
5*9aa11ec8SBen Roth#import "EXTest.h"
6d5e9e21bSBen Roth
7d5e9e21bSBen Roth#import <React/RCTAssert.h>
8d5e9e21bSBen Roth#import <React/RCTUtils.h>
92a38a11eSExponent GitHub Bot
102a38a11eSExponent GitHub Bot#import <XCTest/XCTest.h>
112a38a11eSExponent GitHub Bot
12abac2b0cSBen Roth#define TEST_ENVIRONMENT 1
13abac2b0cSBen Roth
142a38a11eSExponent GitHub Bot@interface ExponentIntegrationTests : XCTestCase
152a38a11eSExponent GitHub Bot
16d5e9e21bSBen Roth@property (nonatomic, strong) EXRootViewController *rootViewController;
17*9aa11ec8SBen Roth@property (nonatomic, strong) NSDictionary *jsTestSuiteResult;
18d5e9e21bSBen Roth
192a38a11eSExponent GitHub Bot@end
202a38a11eSExponent GitHub Bot
212a38a11eSExponent GitHub Bot@implementation ExponentIntegrationTests
222a38a11eSExponent GitHub Bot
232a38a11eSExponent GitHub Bot- (void)setUp
242a38a11eSExponent GitHub Bot{
252a38a11eSExponent GitHub Bot  [super setUp];
26*9aa11ec8SBen Roth
27*9aa11ec8SBen Roth  _jsTestSuiteResult = nil;
28d5e9e21bSBen Roth  _rootViewController = (EXRootViewController *)[ExpoKit sharedInstance].rootViewController;
29*9aa11ec8SBen Roth  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_onTestSuiteCompleted:) name:EXTestSuiteCompletedNotification object:nil];
302a38a11eSExponent GitHub Bot}
312a38a11eSExponent GitHub Bot
32d5e9e21bSBen Roth- (void)testDoesTestSuiteAppPassAllJSTests
332a38a11eSExponent GitHub Bot{
34d5e9e21bSBen Roth  [_rootViewController applicationWillEnterForeground];
352a38a11eSExponent GitHub Bot
36*9aa11ec8SBen Roth  // wait for JS
37*9aa11ec8SBen Roth  NSDate *dateToTimeOut = [NSDate dateWithTimeIntervalSinceNow:60];
38*9aa11ec8SBen Roth  while (dateToTimeOut.timeIntervalSinceNow > 0 && _jsTestSuiteResult == nil) {
39d5e9e21bSBen Roth    [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
40d5e9e21bSBen Roth    [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
41d5e9e21bSBen Roth  }
42*9aa11ec8SBen Roth  XCTAssert((_jsTestSuiteResult), @"Test suite timed out");
43*9aa11ec8SBen Roth  XCTAssert(([_jsTestSuiteResult[@"failed"] integerValue] == 0), @"Test suite failed: %@", _jsTestSuiteResult);
44*9aa11ec8SBen Roth}
45*9aa11ec8SBen Roth
46*9aa11ec8SBen Roth#pragma mark - internal
47*9aa11ec8SBen Roth
48*9aa11ec8SBen Roth- (void)_onTestSuiteCompleted:(NSNotification *)notif
49*9aa11ec8SBen Roth{
50*9aa11ec8SBen Roth  _jsTestSuiteResult = notif.userInfo;
512a38a11eSExponent GitHub Bot}
522a38a11eSExponent GitHub Bot
532a38a11eSExponent GitHub Bot@end
54