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

Add MessengerRegisterGroupRequestHandler

parent 424ed26a
No related branches found
No related tags found
2 merge requests!147Group Chats,!102Release 1.0.0
import XCTestDynamicOverlay
import XXClient
public struct MessengerRegisterGroupRequestHandler {
public var run: (GroupRequest) -> Cancellable
public func callAsFunction(_ handler: GroupRequest) -> Cancellable {
run(handler)
}
}
extension MessengerRegisterGroupRequestHandler {
public static func live(_ env: MessengerEnvironment) -> MessengerRegisterGroupRequestHandler {
MessengerRegisterGroupRequestHandler { handler in
env.groupRequests.register(handler)
}
}
}
extension MessengerRegisterGroupRequestHandler {
public static let unimplemented = MessengerRegisterGroupRequestHandler(
run: XCTUnimplemented("\(Self.self)", placeholder: Cancellable {})
)
}
...@@ -49,6 +49,7 @@ public struct Messenger { ...@@ -49,6 +49,7 @@ public struct Messenger {
public var receiveFile: MessengerReceiveFile public var receiveFile: MessengerReceiveFile
public var trackServices: MessengerTrackServices public var trackServices: MessengerTrackServices
public var getNotificationReports: MessengerGetNotificationReports public var getNotificationReports: MessengerGetNotificationReports
public var registerGroupRequestHandler: MessengerRegisterGroupRequestHandler
public var startGroupChat: MessengerStartGroupChat public var startGroupChat: MessengerStartGroupChat
} }
...@@ -103,6 +104,7 @@ extension Messenger { ...@@ -103,6 +104,7 @@ extension Messenger {
receiveFile: .live(env), receiveFile: .live(env),
trackServices: .live(env), trackServices: .live(env),
getNotificationReports: .live(env), getNotificationReports: .live(env),
registerGroupRequestHandler: .live(env),
startGroupChat: .live(env) startGroupChat: .live(env)
) )
} }
...@@ -158,6 +160,7 @@ extension Messenger { ...@@ -158,6 +160,7 @@ extension Messenger {
receiveFile: .unimplemented, receiveFile: .unimplemented,
trackServices: .unimplemented, trackServices: .unimplemented,
getNotificationReports: .unimplemented, getNotificationReports: .unimplemented,
registerGroupRequestHandler: .unimplemented,
startGroupChat: .unimplemented startGroupChat: .unimplemented
) )
} }
import XCTest
import XXClient
@testable import XXMessengerClient
final class MessengerRegisterGroupRequestHandlerTests: XCTestCase {
func testRegister() {
var registered: [GroupRequest] = []
var didHandle: [Group] = []
var didCancel = 0
var env: MessengerEnvironment = .unimplemented
env.groupRequests.register = { handler in
registered.append(handler)
return Cancellable { didCancel += 1 }
}
let register: MessengerRegisterGroupRequestHandler = .live(env)
let cancellable = register(.init { group in
didHandle.append(group)
})
XCTAssertEqual(registered.count, 1)
let group = Group.stub(1)
registered.forEach { handler in
handler.handle(group)
}
XCTAssertEqual(didHandle.map { $0.getId() }, [group.getId()])
cancellable.cancel()
XCTAssertEqual(didCancel, 1)
}
}
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