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

Add MessengerStopBackup function

parent ef6c6113
No related branches found
No related tags found
2 merge requests!107Messenger - backup,!102Release 1.0.0
import Bindings
import XCTestDynamicOverlay
public struct MessengerStopBackup {
public var run: () throws -> Void
public func callAsFunction() throws {
try run()
}
}
extension MessengerStopBackup {
public static func live(_ env: MessengerEnvironment) -> MessengerStopBackup {
MessengerStopBackup {
guard let backup = env.backup() else { return }
try backup.stop()
env.backup.set(nil)
}
}
}
extension MessengerStopBackup {
public static let unimplemented = MessengerStopBackup(
run: XCTUnimplemented("\(Self.self)")
)
}
...@@ -31,6 +31,7 @@ public struct Messenger { ...@@ -31,6 +31,7 @@ public struct Messenger {
public var sendMessage: MessengerSendMessage public var sendMessage: MessengerSendMessage
public var registerBackupCallback: MessengerRegisterBackupCallback public var registerBackupCallback: MessengerRegisterBackupCallback
public var isBackupRunning: MessengerIsBackupRunning public var isBackupRunning: MessengerIsBackupRunning
public var stopBackup: MessengerStopBackup
} }
extension Messenger { extension Messenger {
...@@ -65,7 +66,8 @@ extension Messenger { ...@@ -65,7 +66,8 @@ extension Messenger {
verifyContact: .live(env), verifyContact: .live(env),
sendMessage: .live(env), sendMessage: .live(env),
registerBackupCallback: .live(env), registerBackupCallback: .live(env),
isBackupRunning: .live(env) isBackupRunning: .live(env),
stopBackup: .live(env)
) )
} }
} }
...@@ -101,6 +103,7 @@ extension Messenger { ...@@ -101,6 +103,7 @@ extension Messenger {
verifyContact: .unimplemented, verifyContact: .unimplemented,
sendMessage: .unimplemented, sendMessage: .unimplemented,
registerBackupCallback: .unimplemented, registerBackupCallback: .unimplemented,
isBackupRunning: .unimplemented isBackupRunning: .unimplemented,
stopBackup: .unimplemented
) )
} }
import CustomDump
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerStopBackupTests: XCTestCase {
func testStop() throws {
var didStopBackup = 0
var didSetBackup: [Backup?] = []
var env: MessengerEnvironment = .unimplemented
env.backup.get = {
var backup: Backup = .unimplemented
backup.stop.run = { didStopBackup += 1 }
return backup
}
env.backup.set = { backup in
didSetBackup.append(backup)
}
let stop: MessengerStopBackup = .live(env)
try stop()
XCTAssertEqual(didStopBackup, 1)
XCTAssertEqual(didSetBackup.count, 1)
XCTAssertNil(didSetBackup.first as? Backup)
}
func testStopFailure() {
struct Failure: Error, Equatable {}
let failure = Failure()
var env: MessengerEnvironment = .unimplemented
env.backup.get = {
var backup: Backup = .unimplemented
backup.stop.run = { throw failure }
return backup
}
let stop: MessengerStopBackup = .live(env)
XCTAssertThrowsError(try stop()) { error in
XCTAssertNoDifference(error as NSError, failure as NSError)
}
}
func testStopWithoutBackup() throws {
var env: MessengerEnvironment = .unimplemented
env.backup.get = { nil }
let stop: MessengerStopBackup = .live(env)
try stop()
}
}
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