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

Add MessengerStartFileTransfer function

parent 5057d2ab
Branches
Tags
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 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.
Please register or to comment