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

Add MessengerStartFileTransfer function

parent 5057d2ab
No related branches found
No related tags found
2 merge requests!123Messenger receive file,!102Release 1.0.0
import XCTestDynamicOverlay
import XXClient
public struct MessengerStartFileTransfer {
public enum Error: Swift.Error, Equatable {
case notConnected
}
public var run: () throws -> Void
public func callAsFunction() throws -> Void {
try run()
}
}
extension MessengerStartFileTransfer {
public static func live(_ env: MessengerEnvironment) -> MessengerStartFileTransfer {
MessengerStartFileTransfer {
guard let e2e = env.e2e() else {
throw Error.notConnected
}
let fileTransfer = try env.initFileTransfer(
params: InitFileTransfer.Params(
e2eId: e2e.getId(),
e2eFileTransferParamsJSON: env.getE2EFileTransferParams(),
fileTransferParamsJSON: env.getFileTransferParams()
),
callback: ReceiveFileCallback { result in
// TODO:
}
)
env.fileTransfer.set(fileTransfer)
}
}
}
extension MessengerStartFileTransfer {
public static let unimplemented = MessengerStartFileTransfer(
run: XCTUnimplemented("\(Self.self)")
)
}
......@@ -40,6 +40,7 @@ public struct Messenger {
public var stopBackup: MessengerStopBackup
public var setLogLevel: MessengerSetLogLevel
public var startLogging: MessengerStartLogging
public var startFileTransfer: MessengerStartFileTransfer
public var sendFile: MessengerSendFile
public var receiveFile: MessengerReceiveFile
}
......@@ -86,6 +87,7 @@ extension Messenger {
stopBackup: .live(env),
setLogLevel: .live(env),
startLogging: .live(env),
startFileTransfer: .live(env),
sendFile: .live(env),
receiveFile: .live(env)
)
......@@ -133,6 +135,7 @@ extension Messenger {
stopBackup: .unimplemented,
setLogLevel: .unimplemented,
startLogging: .unimplemented,
startFileTransfer: .unimplemented,
sendFile: .unimplemented,
receiveFile: .unimplemented
)
......
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerStartFileTransferTests: XCTestCase {
func testStart() throws {
let e2eId = 123
let e2eFileTransferParams = "e2eFileTransferParams".data(using: .utf8)!
let fileTransferParams = "fileTransferParams".data(using: .utf8)!
var didInitFileTransfer: [InitFileTransfer.Params] = []
var receiveFileCallback: ReceiveFileCallback?
var didSetFileTransfer: [FileTransfer?] = []
var env: MessengerEnvironment = .unimplemented
env.e2e.get = {
var e2e: E2E = .unimplemented
e2e.getId.run = { e2eId }
return e2e
}
env.getE2EFileTransferParams.run = {
e2eFileTransferParams
}
env.getFileTransferParams.run = {
fileTransferParams
}
env.initFileTransfer.run = { params, callback in
didInitFileTransfer.append(params)
receiveFileCallback = callback
var fileTransfer: FileTransfer = .unimplemented
return fileTransfer
}
env.fileTransfer.set = {
didSetFileTransfer.append($0)
}
let start: MessengerStartFileTransfer = .live(env)
try start()
XCTAssertNoDifference(didInitFileTransfer, [.init(
e2eId: e2eId,
e2eFileTransferParamsJSON: e2eFileTransferParams,
fileTransferParamsJSON: fileTransferParams
)])
XCTAssertNotNil(receiveFileCallback)
XCTAssertNoDifference(didSetFileTransfer.map { $0 != nil }, [true])
}
func testStartWhenNotConnected() {
var env: MessengerEnvironment = .unimplemented
env.e2e.get = { nil }
let start: MessengerStartFileTransfer = .live(env)
XCTAssertThrowsError(try start()) { error in
XCTAssertNoDifference(
error as NSError,
MessengerStartFileTransfer.Error.notConnected as NSError
)
}
}
}
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