diff --git a/packages/react-native/ReactCommon/react/bridgeless/iostests/RCTHostTests.mm b/packages/react-native/ReactCommon/react/bridgeless/iostests/RCTHostTests.mm index 13fcf49f16a..f76dfbb5f68 100644 --- a/packages/react-native/ReactCommon/react/bridgeless/iostests/RCTHostTests.mm +++ b/packages/react-native/ReactCommon/react/bridgeless/iostests/RCTHostTests.mm @@ -7,13 +7,72 @@ #import +#import +#import +#import +#import +#import + +#import + +@interface ShimRCTInstance : NSObject +@end + @interface RCTHostTests : XCTestCase @end -@implementation RCTHostTests +@implementation RCTHostTests { + RCTHost *_subject; + id _mockHostDelegate; +} -- (void)testHost +static ShimRCTInstance *shimmedRCTInstance; + +- (void)setUp { + [super setUp]; + + shimmedRCTInstance = [ShimRCTInstance new]; + + _mockHostDelegate = OCMProtocolMock(@protocol(RCTHostDelegate)); + _subject = [[RCTHost alloc] initWithBundleURL:OCMClassMock([NSURL class]) + hostDelegate:_mockHostDelegate + turboModuleManagerDelegate:OCMProtocolMock(@protocol(RCTTurboModuleManagerDelegate)) + jsEngineProvider:^std::shared_ptr() { + return std::make_shared(); + }]; +} + +- (void)testStart +{ + [_subject start]; + OCMVerify(OCMTimes(1), [_mockHostDelegate hostDidStart:_subject]); +} + +@end + +@implementation ShimRCTInstance + +- (instancetype)init +{ + if (self = [super init]) { + RCTSwizzleInstanceSelector( + [RCTInstance class], + [ShimRCTInstance class], + @selector(initWithDelegate: + jsEngineInstance:bundleManager:turboModuleManagerDelegate:onInitialBundleLoad:moduleRegistry:)); + } + return self; +} + +- (instancetype)initWithDelegate:(id)delegate + jsEngineInstance:(std::shared_ptr)jsEngineInstance + bundleManager:(RCTBundleManager *)bundleManager + turboModuleManagerDelegate:(id)tmmDelegate + onInitialBundleLoad:(RCTInstanceInitialBundleLoadCompletionBlock)onInitialBundleLoad + moduleRegistry:(RCTModuleRegistry *)moduleRegistry +{ + return self; } @end