From 21869e9d4dbc1ae6d83bc0f2bca33e71c22a81e5 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Mon, 22 Aug 2022 18:11:25 +0100 Subject: [PATCH] Add MessengerCMix, MessengerE2E, and MessengerUD Functors for accessing XXClient components --- .../Messenger/Functors/MessengerCMix.swift | 22 +++++++++++++++++++ .../Messenger/Functors/MessengerE2E.swift | 22 +++++++++++++++++++ .../Messenger/Functors/MessengerUD.swift | 22 +++++++++++++++++++ .../Messenger/Messenger.swift | 9 ++++++++ .../Functors/MessengerCMixTests.swift | 21 ++++++++++++++++++ .../Functors/MessengerE2ETests.swift | 21 ++++++++++++++++++ .../Messenger/Functors/MessengerUDTests.swift | 21 ++++++++++++++++++ 7 files changed, 138 insertions(+) create mode 100644 Sources/XXMessengerClient/Messenger/Functors/MessengerCMix.swift create mode 100644 Sources/XXMessengerClient/Messenger/Functors/MessengerE2E.swift create mode 100644 Sources/XXMessengerClient/Messenger/Functors/MessengerUD.swift create mode 100644 Tests/XXMessengerClientTests/Messenger/Functors/MessengerCMixTests.swift create mode 100644 Tests/XXMessengerClientTests/Messenger/Functors/MessengerE2ETests.swift create mode 100644 Tests/XXMessengerClientTests/Messenger/Functors/MessengerUDTests.swift diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerCMix.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerCMix.swift new file mode 100644 index 00000000..5543c048 --- /dev/null +++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerCMix.swift @@ -0,0 +1,22 @@ +import XXClient +import XCTestDynamicOverlay + +public struct MessengerCMix { + public var run: () -> CMix? + + public func callAsFunction() -> CMix? { + run() + } +} + +extension MessengerCMix { + public static func live(_ env: MessengerEnvironment) -> MessengerCMix { + MessengerCMix(run: env.ctx.getCMix) + } +} + +extension MessengerCMix { + public static let unimplemented = MessengerCMix( + run: XCTUnimplemented("\(Self.self)", placeholder: nil) + ) +} diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerE2E.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerE2E.swift new file mode 100644 index 00000000..cc1f8def --- /dev/null +++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerE2E.swift @@ -0,0 +1,22 @@ +import XXClient +import XCTestDynamicOverlay + +public struct MessengerE2E { + public var run: () -> E2E? + + public func callAsFunction() -> E2E? { + run() + } +} + +extension MessengerE2E { + public static func live(_ env: MessengerEnvironment) -> MessengerE2E { + MessengerE2E(run: env.ctx.getE2E) + } +} + +extension MessengerE2E { + public static let unimplemented = MessengerE2E( + run: XCTUnimplemented("\(Self.self)", placeholder: nil) + ) +} diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerUD.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerUD.swift new file mode 100644 index 00000000..c64ee6cf --- /dev/null +++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerUD.swift @@ -0,0 +1,22 @@ +import XXClient +import XCTestDynamicOverlay + +public struct MessengerUD { + public var run: () -> UserDiscovery? + + public func callAsFunction() -> UserDiscovery? { + run() + } +} + +extension MessengerUD { + public static func live(_ env: MessengerEnvironment) -> MessengerUD { + MessengerUD(run: env.ctx.getUD) + } +} + +extension MessengerUD { + public static let unimplemented = MessengerUD( + run: XCTUnimplemented("\(Self.self)", placeholder: nil) + ) +} diff --git a/Sources/XXMessengerClient/Messenger/Messenger.swift b/Sources/XXMessengerClient/Messenger/Messenger.swift index a477f7cc..12610bd6 100644 --- a/Sources/XXMessengerClient/Messenger/Messenger.swift +++ b/Sources/XXMessengerClient/Messenger/Messenger.swift @@ -1,6 +1,9 @@ import XXClient public struct Messenger { + public var cMix: MessengerCMix + public var e2e: MessengerE2E + public var ud: MessengerUD public var isCreated: MessengerIsCreated public var create: MessengerCreate public var isLoaded: MessengerIsLoaded @@ -16,6 +19,9 @@ public struct Messenger { extension Messenger { public static func live(_ env: MessengerEnvironment) -> Messenger { Messenger( + cMix: .live(env), + e2e: .live(env), + ud: .live(env), isCreated: .live(env), create: .live(env), isLoaded: .live(env), @@ -32,6 +38,9 @@ extension Messenger { extension Messenger { public static let unimplemented = Messenger( + cMix: .unimplemented, + e2e: .unimplemented, + ud: .unimplemented, isCreated: .unimplemented, create: .unimplemented, isLoaded: .unimplemented, diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCMixTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCMixTests.swift new file mode 100644 index 00000000..f4327a08 --- /dev/null +++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerCMixTests.swift @@ -0,0 +1,21 @@ +import XCTest +import XXClient +@testable import XXMessengerClient + +final class MessengerCMixTests: XCTestCase { + func testCMix() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getCMix = { .unimplemented } + let cMix: MessengerCMix = .live(env) + + XCTAssertNotNil(cMix()) + } + + func testCMixWhenNotSet() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getCMix = { nil } + let cMix: MessengerCMix = .live(env) + + XCTAssertNil(cMix()) + } +} diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerE2ETests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerE2ETests.swift new file mode 100644 index 00000000..bb54fb78 --- /dev/null +++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerE2ETests.swift @@ -0,0 +1,21 @@ +import XCTest +import XXClient +@testable import XXMessengerClient + +final class MessengerE2ETests: XCTestCase { + func testE2E() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getE2E = { .unimplemented } + let e2e: MessengerE2E = .live(env) + + XCTAssertNotNil(e2e()) + } + + func testE2EWhenNotSet() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getE2E = { nil } + let e2e: MessengerE2E = .live(env) + + XCTAssertNil(e2e()) + } +} diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerUDTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerUDTests.swift new file mode 100644 index 00000000..0166a8bb --- /dev/null +++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerUDTests.swift @@ -0,0 +1,21 @@ +import XCTest +import XXClient +@testable import XXMessengerClient + +final class MessengerUDTests: XCTestCase { + func testUD() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getE2E = { .unimplemented } + let e2e: MessengerE2E = .live(env) + + XCTAssertNotNil(e2e()) + } + + func testE2EWhenNotSet() throws { + var env: MessengerEnvironment = .unimplemented + env.ctx.getE2E = { nil } + let e2e: MessengerE2E = .live(env) + + XCTAssertNil(e2e()) + } +} -- GitLab