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

Add MessengerRegisterReceiveFileCallback function

parent 393e17ff
No related branches found
No related tags found
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 {
public var stopBackup: MessengerStopBackup
public var setLogLevel: MessengerSetLogLevel
public var startLogging: MessengerStartLogging
public var registerReceiveFileCallback: MessengerRegisterReceiveFileCallback
public var startFileTransfer: MessengerStartFileTransfer
public var sendFile: MessengerSendFile
public var receiveFile: MessengerReceiveFile
......@@ -87,6 +88,7 @@ extension Messenger {
stopBackup: .live(env),
setLogLevel: .live(env),
startLogging: .live(env),
registerReceiveFileCallback: .live(env),
startFileTransfer: .live(env),
sendFile: .live(env),
receiveFile: .live(env)
......@@ -135,6 +137,7 @@ extension Messenger {
stopBackup: .unimplemented,
setLogLevel: .unimplemented,
startLogging: .unimplemented,
registerReceiveFileCallback: .unimplemented,
startFileTransfer: .unimplemented,
sendFile: .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.
Finish editing this message first!
Please register or to comment