Skip to content
Snippets Groups Projects
Commit 2edf739a authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add MessengerRegisterReceiveFileCallback function

parent 393e17ff
Branches
Tags
2 merge requests!123Messenger receive file,!102Release 1.0.0
import XCTestDynamicOverlay
import XXClient
public struct MessengerRegisterReceiveFileCallback {
public var run: (ReceiveFileCallback) -> Cancellable
public func callAsFunction(_ callback: ReceiveFileCallback) -> Cancellable {
run(callback)
}
}
extension MessengerRegisterReceiveFileCallback {
public static func live(_ env: MessengerEnvironment) -> MessengerRegisterReceiveFileCallback {
MessengerRegisterReceiveFileCallback { callback in
env.receiveFileCallbacksRegistry.register(callback)
}
}
}
extension MessengerRegisterReceiveFileCallback {
public static let unimplemented = MessengerRegisterReceiveFileCallback(
run: XCTUnimplemented("\(Self.self)", placeholder: Cancellable {})
)
}
...@@ -40,6 +40,7 @@ public struct Messenger { ...@@ -40,6 +40,7 @@ public struct Messenger {
public var stopBackup: MessengerStopBackup public var stopBackup: MessengerStopBackup
public var setLogLevel: MessengerSetLogLevel public var setLogLevel: MessengerSetLogLevel
public var startLogging: MessengerStartLogging public var startLogging: MessengerStartLogging
public var registerReceiveFileCallback: MessengerRegisterReceiveFileCallback
public var startFileTransfer: MessengerStartFileTransfer public var startFileTransfer: MessengerStartFileTransfer
public var sendFile: MessengerSendFile public var sendFile: MessengerSendFile
public var receiveFile: MessengerReceiveFile public var receiveFile: MessengerReceiveFile
...@@ -87,6 +88,7 @@ extension Messenger { ...@@ -87,6 +88,7 @@ extension Messenger {
stopBackup: .live(env), stopBackup: .live(env),
setLogLevel: .live(env), setLogLevel: .live(env),
startLogging: .live(env), startLogging: .live(env),
registerReceiveFileCallback: .live(env),
startFileTransfer: .live(env), startFileTransfer: .live(env),
sendFile: .live(env), sendFile: .live(env),
receiveFile: .live(env) receiveFile: .live(env)
...@@ -135,6 +137,7 @@ extension Messenger { ...@@ -135,6 +137,7 @@ extension Messenger {
stopBackup: .unimplemented, stopBackup: .unimplemented,
setLogLevel: .unimplemented, setLogLevel: .unimplemented,
startLogging: .unimplemented, startLogging: .unimplemented,
registerReceiveFileCallback: .unimplemented,
startFileTransfer: .unimplemented, startFileTransfer: .unimplemented,
sendFile: .unimplemented, sendFile: .unimplemented,
receiveFile: .unimplemented receiveFile: .unimplemented
......
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerRegisterReceiveFileCallbackTests: XCTestCase {
func testRegisterCallback() {
var registeredCallbacks: [ReceiveFileCallback] = []
var didHandleResult: [ReceiveFileCallback.Result] = []
var didCancelRegisteredCallback = 0
var env: MessengerEnvironment = .unimplemented
env.receiveFileCallbacksRegistry.register = { callback in
registeredCallbacks.append(callback)
return Cancellable { didCancelRegisteredCallback += 1 }
}
let registerCallback: MessengerRegisterReceiveFileCallback = .live(env)
let cancellable = registerCallback(ReceiveFileCallback { result in
didHandleResult.append(result)
})
XCTAssertEqual(registeredCallbacks.count, 1)
registeredCallbacks.forEach { callback in
callback.handle(.success(.stub(1)))
}
XCTAssertNoDifference(didHandleResult, [.success(.stub(1))])
cancellable.cancel()
XCTAssertEqual(didCancelRegisteredCallback, 1)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment