1 import Quick 2 import Nimble 3 4 @testable import EXDevMenu 5 6 class DevMenuAppInstanceTest: QuickSpec { 7 class MockedBridge: RCTBridge { 8 var enqueueJSCallWasCalled = false 9 invalidatenull10 override func invalidate() { 11 // NOOP 12 } 13 enqueueJSCallnull14 override func enqueueJSCall(_ moduleDotMethod: String!, args: [Any]!) { 15 enqueueJSCallWasCalled = true 16 17 expect(moduleDotMethod).to(equal("RCTDeviceEventEmitter.emit")) 18 expect(args.first as? String).to(equal("closeDevMenu")) 19 } 20 } 21 specnull22 override func spec() { 23 it("checks if `sendCloseEvent` sends correct event") { 24 let mockedBridge = MockedBridge(delegate: nil, launchOptions: nil)! 25 let appInstance = DevMenuAppInstance( 26 manager: DevMenuManager.shared, 27 bridge: mockedBridge 28 ) 29 30 appInstance.sendCloseEvent() 31 32 expect(mockedBridge.enqueueJSCallWasCalled).to(beTrue()) 33 } 34 35 it("checks if js bundle was found") { 36 let mockedBridge = MockedBridge(delegate: nil, launchOptions: nil)! 37 let appInstance = DevMenuAppInstance( 38 manager: DevMenuManager.shared, 39 bridge: mockedBridge 40 ) 41 42 let sourceURL = appInstance.sourceURL(for: mockedBridge) 43 44 expect(sourceURL).toNot(beNil()) 45 } 46 47 it("checks if extra modules was exported") { 48 let mockedBridge = MockedBridge(delegate: nil, launchOptions: nil)! 49 let appInstance = DevMenuAppInstance( 50 manager: DevMenuManager.shared, 51 bridge: mockedBridge 52 ) 53 54 let extraModules = appInstance.extraModules(for: mockedBridge) 55 56 expect(extraModules).toNot(beNil()) 57 expect(extraModules?.first { type(of: $0).moduleName() == "DevLoadingView" }).toNot(beNil()) 58 expect(extraModules?.first { type(of: $0).moduleName() == "DevSettings" }).toNot(beNil()) 59 } 60 } 61 } 62