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
This commit is part of merge request !123. Comments created here will be created in the context of that merge request.
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.
Please register or to comment