1// Copyright 2015-present 650 Industries. All rights reserved. 2 3#import "EXTest.h" 4#import "EXUnversioned.h" 5 6NSNotificationName EXTestSuiteCompletedNotification = @"EXTestSuiteCompletedNotification"; 7 8@interface EXTest () 9 10@property (nonatomic, assign) EXTestEnvironment environment; 11 12@end 13 14@implementation EXTest 15 16+ (NSString *)moduleName { return @"ExponentTest"; } 17 18- (instancetype)initWithEnvironment:(EXTestEnvironment)environment 19{ 20 if (self = [super init]) { 21 _environment = environment; 22 } 23 return self; 24} 25 26RCT_EXPORT_METHOD(completed: (NSString *)jsonStringifiedResult) 27{ 28 NSDictionary *failedResult = @{ @"failed": @(1) }; 29 30 __block NSError *jsonError; 31 NSData *jsonData = [jsonStringifiedResult dataUsingEncoding:NSUTF8StringEncoding]; 32 id resultObj = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&jsonError]; 33 if (jsonError) { 34 resultObj = failedResult; 35 } 36 37 [[NSNotificationCenter defaultCenter] postNotificationName:EX_UNVERSIONED(@"EXTestSuiteCompletedNotification") 38 object:nil 39 userInfo:resultObj]; 40} 41 42RCT_REMAP_METHOD(action, 43 actionWithParams:(NSDictionary *)params 44 withResolver:(RCTPromiseResolveBlock)resolve 45 rejecter:(__unused RCTPromiseRejectBlock)reject) 46{ 47 // stub on iOS 48 resolve(@{}); 49} 50 51RCT_REMAP_METHOD(shouldSkipTestsRequiringPermissionsAsync, 52 shouldSkipTestsRequiringPermissionsWithResolver:(RCTPromiseResolveBlock)resolve 53 rejecter:(__unused RCTPromiseRejectBlock)reject) 54{ 55 resolve(@(_environment == EXTestEnvironmentCI)); 56} 57 58#pragma mark - util 59 60+ (EXTestEnvironment)testEnvironmentFromString:(NSString *)testEnvironmentString 61{ 62 if ([testEnvironmentString isEqualToString:@"local"]) { 63 return EXTestEnvironmentLocal; 64 } else if ([testEnvironmentString isEqualToString:@"ci"]) { 65 return EXTestEnvironmentCI; 66 } 67 return EXTestEnvironmentNone; 68} 69 70@end 71