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

Add MessengerStartGroupChat

parent bfd224cd
No related branches found
No related tags found
2 merge requests!147Group Chats,!102Release 1.0.0
import XXClient
import XCTestDynamicOverlay
public struct MessengerStartGroupChat {
public enum Error: Swift.Error, Equatable {
case notConnected
}
public var run: () throws -> Void
public func callAsFunction() throws {
try run()
}
}
extension MessengerStartGroupChat {
public static func live(_ env: MessengerEnvironment) -> MessengerStartGroupChat {
MessengerStartGroupChat {
guard let e2e = env.e2e.get() else {
throw Error.notConnected
}
let groupChat = try env.newGroupChat(
e2eId: e2e.getId(),
groupRequest: env.groupRequests.registered(),
groupChatProcessor: env.groupChatProcessors.registered()
)
env.groupChat.set(groupChat)
}
}
}
extension MessengerStartGroupChat {
public static let unimplemented = MessengerStartGroupChat(
run: XCTestDynamicOverlay.unimplemented("\(Self.self)")
)
}
......@@ -48,6 +48,7 @@ public struct Messenger {
public var receiveFile: MessengerReceiveFile
public var trackServices: MessengerTrackServices
public var getNotificationReports: MessengerGetNotificationReports
public var startGroupChat: MessengerStartGroupChat
}
extension Messenger {
......@@ -99,7 +100,8 @@ extension Messenger {
sendFile: .live(env),
receiveFile: .live(env),
trackServices: .live(env),
getNotificationReports: .live(env)
getNotificationReports: .live(env),
startGroupChat: .live(env)
)
}
}
......@@ -152,6 +154,7 @@ extension Messenger {
sendFile: .unimplemented,
receiveFile: .unimplemented,
trackServices: .unimplemented,
getNotificationReports: .unimplemented
getNotificationReports: .unimplemented,
startGroupChat: .unimplemented
)
}
......@@ -18,6 +18,7 @@ public struct MessengerEnvironment {
public var getFileTransferParams: GetFileTransferParams
public var getNotificationsReport: GetNotificationsReport
public var getSingleUseParams: GetSingleUseParams
public var groupChat: Stored<GroupChat?>
public var groupChatProcessors: GroupChatProcessorRegistry
public var groupRequests: GroupRequestCallbacksRegistry
public var initFileTransfer: InitFileTransfer
......@@ -33,6 +34,7 @@ public struct MessengerEnvironment {
public var ndfEnvironment: NDFEnvironment
public var newCMix: NewCMix
public var newCMixFromBackup: NewCMixFromBackup
public var newGroupChat: NewGroupChat
public var newOrLoadUd: NewOrLoadUd
public var newUdManagerFromBackup: NewUdManagerFromBackup
public var passwordStorage: PasswordStorage
......@@ -73,6 +75,7 @@ extension MessengerEnvironment {
getFileTransferParams: .liveDefault,
getNotificationsReport: .live,
getSingleUseParams: .liveDefault,
groupChat: .inMemory(),
groupChatProcessors: .live(),
groupRequests: .live(),
initFileTransfer: .live,
......@@ -88,6 +91,7 @@ extension MessengerEnvironment {
ndfEnvironment: .mainnet,
newCMix: .live,
newCMixFromBackup: .live,
newGroupChat: .live,
newOrLoadUd: .live,
newUdManagerFromBackup: .live,
passwordStorage: .keychain,
......@@ -123,6 +127,7 @@ extension MessengerEnvironment {
getFileTransferParams: .unimplemented,
getNotificationsReport: .unimplemented,
getSingleUseParams: .unimplemented,
groupChat: .unimplemented(),
groupChatProcessors: .unimplemented,
groupRequests: .unimplemented,
initFileTransfer: .unimplemented,
......@@ -138,6 +143,7 @@ extension MessengerEnvironment {
ndfEnvironment: .unimplemented,
newCMix: .unimplemented,
newCMixFromBackup: .unimplemented,
newGroupChat: .unimplemented,
newOrLoadUd: .unimplemented,
newUdManagerFromBackup: .unimplemented,
passwordStorage: .unimplemented,
......
import CustomDump
import XXClient
import XCTest
@testable import XXMessengerClient
final class MessengerStartGroupChatTests: XCTestCase {
func testStart() throws {
var didCreateNewGroupChatWithE2eId: [Int] = []
var didSetGroupChat: [GroupChat?] = []
let e2eId = 123
var env: MessengerEnvironment = .unimplemented
env.e2e.get = {
var e2e: E2E = .unimplemented
e2e.getId.run = { e2eId }
return e2e
}
env.groupRequests.registered = { .unimplemented }
env.groupChatProcessors.registered = { .unimplemented }
env.newGroupChat.run = { e2eId, _, _ in
didCreateNewGroupChatWithE2eId.append(e2eId)
return .unimplemented
}
env.groupChat.set = { groupChat in
didSetGroupChat.append(groupChat)
}
let start: MessengerStartGroupChat = .live(env)
try start()
XCTAssertEqual(didCreateNewGroupChatWithE2eId, [e2eId])
XCTAssertEqual(didSetGroupChat.map { $0 != nil }, [true])
}
func testStartWithoutE2E() throws {
var env: MessengerEnvironment = .unimplemented
env.e2e.get = { nil }
let start: MessengerStartGroupChat = .live(env)
XCTAssertThrowsError(try start()) { error in
XCTAssertEqual(error as? MessengerStartGroupChat.Error, .notConnected)
}
}
}
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