1 @testable import ABI49_0_0ExpoModulesCore 2 3 class UnnamedModule: Module { definitionnull4 func definition() -> ModuleDefinition {} 5 } 6 7 class NamedModule: Module { 8 static let namedModuleName = "MyModule" 9 definitionnull10 func definition() -> ModuleDefinition { 11 Name(Self.namedModuleName) 12 } 13 } 14 15 class CustomModule: Module { 16 let body: MockedDefinitionFunc 17 definitionnull18 func definition() -> ModuleDefinition { 19 return body(self) 20 } 21 22 init(appContext: AppContext, _ body: @escaping MockedDefinitionFunc) { 23 self.body = body 24 super.init(appContext: appContext) 25 } 26 27 required init(appContext: AppContext) { 28 fatalError("`init(appContext:)` is unavailable in mocked module class.") 29 } 30 } 31 32 typealias MockedDefinitionFunc = (CustomModule) -> ModuleDefinition 33 34 func mockModuleHolder(_ appContext: AppContext, @ModuleDefinitionBuilder _ definitionBody: @escaping () -> ModuleDefinition) -> ModuleHolder { 35 return ModuleHolder(appContext: appContext, module: CustomModule(appContext: appContext, { _ in definitionBody() })) 36 } 37 38 func mockModuleHolder(_ appContext: AppContext, @ModuleDefinitionBuilder _ definitionBody: @escaping (CustomModule) -> ModuleDefinition) -> ModuleHolder { 39 return ModuleHolder(appContext: appContext, module: CustomModule(appContext: appContext, { module in definitionBody(module) })) 40 } 41