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 { ...@@ -48,6 +48,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 startGroupChat: MessengerStartGroupChat
} }
extension Messenger { extension Messenger {
...@@ -99,7 +100,8 @@ extension Messenger { ...@@ -99,7 +100,8 @@ extension Messenger {
sendFile: .live(env), sendFile: .live(env),
receiveFile: .live(env), receiveFile: .live(env),
trackServices: .live(env), trackServices: .live(env),
getNotificationReports: .live(env) getNotificationReports: .live(env),
startGroupChat: .live(env)
) )
} }
} }
...@@ -152,6 +154,7 @@ extension Messenger { ...@@ -152,6 +154,7 @@ extension Messenger {
sendFile: .unimplemented, sendFile: .unimplemented,
receiveFile: .unimplemented, receiveFile: .unimplemented,
trackServices: .unimplemented, trackServices: .unimplemented,
getNotificationReports: .unimplemented getNotificationReports: .unimplemented,
startGroupChat: .unimplemented
) )
} }
...@@ -18,6 +18,7 @@ public struct MessengerEnvironment { ...@@ -18,6 +18,7 @@ public struct MessengerEnvironment {
public var getFileTransferParams: GetFileTransferParams public var getFileTransferParams: GetFileTransferParams
public var getNotificationsReport: GetNotificationsReport public var getNotificationsReport: GetNotificationsReport
public var getSingleUseParams: GetSingleUseParams public var getSingleUseParams: GetSingleUseParams
public var groupChat: Stored<GroupChat?>
public var groupChatProcessors: GroupChatProcessorRegistry public var groupChatProcessors: GroupChatProcessorRegistry
public var groupRequests: GroupRequestCallbacksRegistry public var groupRequests: GroupRequestCallbacksRegistry
public var initFileTransfer: InitFileTransfer public var initFileTransfer: InitFileTransfer
...@@ -33,6 +34,7 @@ public struct MessengerEnvironment { ...@@ -33,6 +34,7 @@ public struct MessengerEnvironment {
public var ndfEnvironment: NDFEnvironment public var ndfEnvironment: NDFEnvironment
public var newCMix: NewCMix public var newCMix: NewCMix
public var newCMixFromBackup: NewCMixFromBackup public var newCMixFromBackup: NewCMixFromBackup
public var newGroupChat: NewGroupChat
public var newOrLoadUd: NewOrLoadUd public var newOrLoadUd: NewOrLoadUd
public var newUdManagerFromBackup: NewUdManagerFromBackup public var newUdManagerFromBackup: NewUdManagerFromBackup
public var passwordStorage: PasswordStorage public var passwordStorage: PasswordStorage
...@@ -73,6 +75,7 @@ extension MessengerEnvironment { ...@@ -73,6 +75,7 @@ extension MessengerEnvironment {
getFileTransferParams: .liveDefault, getFileTransferParams: .liveDefault,
getNotificationsReport: .live, getNotificationsReport: .live,
getSingleUseParams: .liveDefault, getSingleUseParams: .liveDefault,
groupChat: .inMemory(),
groupChatProcessors: .live(), groupChatProcessors: .live(),
groupRequests: .live(), groupRequests: .live(),
initFileTransfer: .live, initFileTransfer: .live,
...@@ -88,6 +91,7 @@ extension MessengerEnvironment { ...@@ -88,6 +91,7 @@ extension MessengerEnvironment {
ndfEnvironment: .mainnet, ndfEnvironment: .mainnet,
newCMix: .live, newCMix: .live,
newCMixFromBackup: .live, newCMixFromBackup: .live,
newGroupChat: .live,
newOrLoadUd: .live, newOrLoadUd: .live,
newUdManagerFromBackup: .live, newUdManagerFromBackup: .live,
passwordStorage: .keychain, passwordStorage: .keychain,
...@@ -123,6 +127,7 @@ extension MessengerEnvironment { ...@@ -123,6 +127,7 @@ extension MessengerEnvironment {
getFileTransferParams: .unimplemented, getFileTransferParams: .unimplemented,
getNotificationsReport: .unimplemented, getNotificationsReport: .unimplemented,
getSingleUseParams: .unimplemented, getSingleUseParams: .unimplemented,
groupChat: .unimplemented(),
groupChatProcessors: .unimplemented, groupChatProcessors: .unimplemented,
groupRequests: .unimplemented, groupRequests: .unimplemented,
initFileTransfer: .unimplemented, initFileTransfer: .unimplemented,
...@@ -138,6 +143,7 @@ extension MessengerEnvironment { ...@@ -138,6 +143,7 @@ extension MessengerEnvironment {
ndfEnvironment: .unimplemented, ndfEnvironment: .unimplemented,
newCMix: .unimplemented, newCMix: .unimplemented,
newCMixFromBackup: .unimplemented, newCMixFromBackup: .unimplemented,
newGroupChat: .unimplemented,
newOrLoadUd: .unimplemented, newOrLoadUd: .unimplemented,
newUdManagerFromBackup: .unimplemented, newUdManagerFromBackup: .unimplemented,
passwordStorage: .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