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

Add SendGroupMessage function wrapper

parent dffced82
No related branches found
No related tags found
2 merge requests!153Release 1.1.0,!152[Messenger example] group chat
import Foundation
import XCTestDynamicOverlay
import XXClient
import XXMessengerClient
import XXModels
public struct SendGroupMessage {
public typealias OnError = (Error) -> Void
public typealias Completion = () -> Void
public var run: (String, Data, @escaping OnError, @escaping Completion) -> Void
public func callAsFunction(
text: String,
to groupId: Data,
onError: @escaping OnError,
completion: @escaping Completion
) {
run(text, groupId, onError, completion)
}
}
extension SendGroupMessage {
public static func live(
messenger: Messenger,
db: DBManagerGetDB,
now: @escaping () -> Date
) -> SendGroupMessage {
SendGroupMessage { text, groupId, onError, completion in
// TODO: implement sending group message
struct Unimplemented: Error, LocalizedError {
var errorDescription: String? { "SendGroupMessage is not implemented!" }
}
onError(Unimplemented())
completion()
}
}
}
extension SendGroupMessage {
public static let unimplemented = SendGroupMessage(
run: XCTUnimplemented("\(Self.self)")
)
}
import CustomDump
import XCTest
import XCTestDynamicOverlay
import XXClient
import XXMessengerClient
import XXModels
@testable import AppCore
final class SendGroupMessageTests: XCTestCase {
enum Action: Equatable {
case didReceiveError(String)
case didComplete
}
var actions: [Action]!
override func setUp() {
actions = []
}
override func tearDown() {
actions = nil
}
func testSend() {
let text = "Hello!"
let groupId = "group-id".data(using: .utf8)!
var messenger: Messenger = .unimplemented
var db: DBManagerGetDB = .unimplemented
let now = Date()
let send: SendGroupMessage = .live(
messenger: messenger,
db: db,
now: { now }
)
send(
text: text,
to: groupId,
onError: { error in
self.actions.append(.didReceiveError(error.localizedDescription))
},
completion: {
self.actions.append(.didComplete)
}
)
XCTAssertNoDifference(actions, [
.didReceiveError("SendGroupMessage is not implemented!"),
.didComplete
])
}
}
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