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

Add MessengerBackupParams function

parent b4d89289
No related branches found
No related tags found
2 merge requests!107Messenger - backup,!102Release 1.0.0
import Bindings
import XCTestDynamicOverlay
public struct MessengerBackupParams {
public enum Error: Swift.Error, Equatable {
case notRunning
}
public var run: (BackupParams) throws -> Void
public func callAsFunction(_ params: BackupParams) throws {
try run(params)
}
}
extension MessengerBackupParams {
public static func live(_ env: MessengerEnvironment) -> MessengerBackupParams {
MessengerBackupParams { params in
guard let backup = env.backup(), backup.isRunning() else {
throw Error.notRunning
}
let paramsData = try params.encode()
let paramsString = String(data: paramsData, encoding: .utf8)!
backup.addJSON(paramsString)
}
}
}
extension MessengerBackupParams {
public static let unimplemented = MessengerBackupParams(
run: XCTUnimplemented("\(Self.self)")
)
}
...@@ -33,6 +33,7 @@ public struct Messenger { ...@@ -33,6 +33,7 @@ public struct Messenger {
public var isBackupRunning: MessengerIsBackupRunning public var isBackupRunning: MessengerIsBackupRunning
public var startBackup: MessengerStartBackup public var startBackup: MessengerStartBackup
public var resumeBackup: MessengerResumeBackup public var resumeBackup: MessengerResumeBackup
public var backupParams: MessengerBackupParams
public var stopBackup: MessengerStopBackup public var stopBackup: MessengerStopBackup
} }
...@@ -71,6 +72,7 @@ extension Messenger { ...@@ -71,6 +72,7 @@ extension Messenger {
isBackupRunning: .live(env), isBackupRunning: .live(env),
startBackup: .live(env), startBackup: .live(env),
resumeBackup: .live(env), resumeBackup: .live(env),
backupParams: .live(env),
stopBackup: .live(env) stopBackup: .live(env)
) )
} }
...@@ -110,6 +112,7 @@ extension Messenger { ...@@ -110,6 +112,7 @@ extension Messenger {
isBackupRunning: .unimplemented, isBackupRunning: .unimplemented,
startBackup: .unimplemented, startBackup: .unimplemented,
resumeBackup: .unimplemented, resumeBackup: .unimplemented,
backupParams: .unimplemented,
stopBackup: .unimplemented stopBackup: .unimplemented
) )
} }
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerBackupParamsTests: XCTestCase {
func testBackupParams() throws {
var didAddJSON: [String] = []
var env: MessengerEnvironment = .unimplemented
env.backup.get = {
var backup: Backup = .unimplemented
backup.isRunning.run = { true }
backup.addJSON.run = { didAddJSON.append($0) }
return backup
}
let backup: MessengerBackupParams = .live(env)
let params = BackupParams(
username: "test-username",
email: "test-email",
phone: "test-phone"
)
try backup(params)
XCTAssertNoDifference(didAddJSON, [
String(data: try params.encode(), encoding: .utf8)!
])
}
func testBackupParamsWhenNoBackup() {
var env: MessengerEnvironment = .unimplemented
env.backup.get = { nil }
let backup: MessengerBackupParams = .live(env)
let params = BackupParams(username: "test", email: nil, phone: nil)
XCTAssertThrowsError(try backup(params)) { error in
XCTAssertNoDifference(
error as NSError,
MessengerBackupParams.Error.notRunning as NSError
)
}
}
func testBackupParamsWhenBackupNotRunning() {
var env: MessengerEnvironment = .unimplemented
env.backup.get = {
var backup: Backup = .unimplemented
backup.isRunning.run = { false }
return backup
}
let backup: MessengerBackupParams = .live(env)
let params = BackupParams(username: "test", email: nil, phone: nil)
XCTAssertThrowsError(try backup(params)) { error in
XCTAssertNoDifference(
error as NSError,
MessengerBackupParams.Error.notRunning 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