Generating SDK Mocks through the usage of `swift run tools generate-sdk-mocks` (#982)

* basic implementation, that works for now only with the local SDK

* replaced a handmade mock with a generated mock
doug/published-on-set
Mauro 2023-05-30 09:48:55 +02:00 committed by GitHub
parent 25e2b05a4a
commit 088ca622a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 857 additions and 194 deletions

View File

@ -39,7 +39,6 @@
0C47AE2CA7929CB3B0E2D793 /* ServerSelectionScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0685156EB62D7E243F097CFC /* ServerSelectionScreenViewModelProtocol.swift */; };
0C58A846F61949B1D545D661 /* NoticeRoomTimelineItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421E716C521F96D24ECE69B3 /* NoticeRoomTimelineItem.swift */; };
0DC815CA24E1BD7F408F37D3 /* CollapsibleTimelineItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7C4EA55DA62F9D0F984A2AE /* CollapsibleTimelineItem.swift */; };
0E6B97E4F4DAC3E5B64B215F /* UserProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66653C5417592A727B549533 /* UserProfile.swift */; };
0E8C480700870BB34A2A360F /* DeviceKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4003BC24B24C9E63D3304177 /* DeviceKit */; };
0EA6537A07E2DC882AEA5962 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 187853A7E643995EE49FAD43 /* Localizable.stringsdict */; };
0EE5EBA18BA1FE10254BB489 /* UIFont+AttributedStringBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = E8CA187FE656EE5A3F6C7DE5 /* UIFont+AttributedStringBuilder.m */; };
@ -193,6 +192,7 @@
501304F26B52DF7024011B6C /* EmojiMartJSONLoaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BF9E3E6A23180EC05F06460 /* EmojiMartJSONLoaderTests.swift */; };
50C90117FE25390BFBD40173 /* RustTracing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 542D4F49FABA056DEEEB3400 /* RustTracing.swift */; };
518C93DC6516D3D018DE065F /* UNNotificationRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49E751D7EDB6043238111D90 /* UNNotificationRequest.swift */; };
520EEDAFBC778AB0B41F2F53 /* ClientMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE6170EFE6A161B0A68AB61 /* ClientMock.swift */; };
5375902175B2FEA2949D7D74 /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CDDDDD9FE1A699D23A5E096 /* LoginScreen.swift */; };
53DEF39F0C4DE02E3FC56D91 /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = 800631D7250B7F93195035F1 /* KeychainAccess */; };
53F1196F9C69512306A2693F /* TextRoomTimelineItemContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28C19F54A0C4FC9AB7ABD583 /* TextRoomTimelineItemContent.swift */; };
@ -538,6 +538,7 @@
D33AC79A50DFC26D2498DD28 /* FileRoomTimelineItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5098DA7799946A61E34A2373 /* FileRoomTimelineItem.swift */; };
D3FD96913D2B1AAA3149DAC7 /* CreateRoomViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69D42EE0102D2857933625DD /* CreateRoomViewModelTests.swift */; };
D415764645491F10344FC6AC /* Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F18AECC9D38C2B6D85F99C /* Publisher.swift */; };
D43F0503EF2CBC55272538FE /* SDKGeneratedMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F079B5DBD0D85FEA687AAE /* SDKGeneratedMocks.swift */; };
D4ACF3276F5D0DA28D4028C9 /* AnalyticsPromptScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8196D64EB9CF2AF1F43E4ED1 /* AnalyticsPromptScreenViewModelProtocol.swift */; };
D53B80EF02C1062E68659EDD /* ReportContentViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 086C19086DD16E9B38E25954 /* ReportContentViewModelTests.swift */; };
D55AF9B5B55FEED04771A461 /* RoomFlowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A008E57D52B07B78DFAD1BB /* RoomFlowCoordinator.swift */; };
@ -563,6 +564,7 @@
E14E469CD97550D0FC58F3CA /* CancellableTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE52983FAFB4E0998C00EE8A /* CancellableTask.swift */; };
E1DF24D085572A55C9758A2D /* Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6E89E530A8E92EC44301CA1 /* Bundle.swift */; };
E1F446C6B78A3A0FEA15079C /* UnsupportedRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2AC3C656E960E15B5905E05 /* UnsupportedRoomTimelineView.swift */; };
E21FE4C5B614F311C0955859 /* UserProfileProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51C454AE59914B551A6D02C0 /* UserProfileProxy.swift */; };
E27C4D1A1F8BB77CA790B403 /* InviteUsersScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A861DA5932B128FE1DCB5CE2 /* InviteUsersScreenCoordinator.swift */; };
E290C78E7F09F47FD2662986 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = A40C19719687984FD9478FBE /* Task.swift */; };
E2DB696117BAEABAD5718023 /* MediaSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = D49B9785E3AD7D1C15A29F2F /* MediaSourceProxy.swift */; };
@ -878,6 +880,7 @@
5098DA7799946A61E34A2373 /* FileRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileRoomTimelineItem.swift; sourceTree = "<group>"; };
50E31AB0E77BB70E2BC77463 /* MatrixUserShareLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatrixUserShareLink.swift; sourceTree = "<group>"; };
51C2BCE0BC1FC69C1B36E688 /* BugReportScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BugReportScreenModels.swift; sourceTree = "<group>"; };
51C454AE59914B551A6D02C0 /* UserProfileProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileProxy.swift; sourceTree = "<group>"; };
5221DFDF809142A2D6AC82B9 /* RoomScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomScreen.swift; sourceTree = "<group>"; };
52BD6ED18E2EB61E28C340AD /* AttributedString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttributedString.swift; sourceTree = "<group>"; };
52D7074991B3267B26D89B22 /* MockRoomTimelineController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRoomTimelineController.swift; sourceTree = "<group>"; };
@ -915,7 +918,7 @@
653610CB5F9776EAAAB98155 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
65AAD845E53B0C8B5E0812C2 /* UserDiscoveryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDiscoveryService.swift; sourceTree = "<group>"; };
65C2B80DD0BF6F10BB5FA922 /* MockAuthenticationServiceProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAuthenticationServiceProxy.swift; sourceTree = "<group>"; };
66653C5417592A727B549533 /* UserProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfile.swift; sourceTree = "<group>"; };
6654859746B0BE9611459391 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = cs; path = cs.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
669F35C505ACE1110589F875 /* MediaUploadingPreprocessor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaUploadingPreprocessor.swift; sourceTree = "<group>"; };
66F2402D738694F98729A441 /* RoomTimelineProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineProvider.swift; sourceTree = "<group>"; };
6861FE915C7B5466E6962BBA /* StartChatScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartChatScreen.swift; sourceTree = "<group>"; };
@ -998,6 +1001,7 @@
8C8616254EE40CA8BA5E9BC2 /* VideoRoomTimelineItemContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoRoomTimelineItemContent.swift; sourceTree = "<group>"; };
8D55702474F279D910D2D162 /* RoomStateEventStringBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomStateEventStringBuilder.swift; sourceTree = "<group>"; };
8D6094DEAAEB388E1AE118C6 /* MockRoomTimelineProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRoomTimelineProvider.swift; sourceTree = "<group>"; };
8D8169443E5AC5FF71BFB3DB /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
8DC2C9E0E15C79BBDA80F0A2 /* TimelineStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineStyle.swift; sourceTree = "<group>"; };
8E088F2A1B9EC529D3221931 /* UITests.xctestplan */ = {isa = PBXFileReference; path = UITests.xctestplan; sourceTree = "<group>"; };
8E1BBA73B611EDEEA6E20E05 /* InvitesScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenModels.swift; sourceTree = "<group>"; };
@ -1076,6 +1080,7 @@
ACB6C5E4950B6C9842F35A38 /* RoomTimelineViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineViewProvider.swift; sourceTree = "<group>"; };
ADB35E2DB4EFE8E6F3959629 /* InviteUsersScreenUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InviteUsersScreenUITests.swift; sourceTree = "<group>"; };
ADD9E0FFA29EAACFF3AB9732 /* SessionVerificationScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionVerificationScreenViewModel.swift; sourceTree = "<group>"; };
ADE6170EFE6A161B0A68AB61 /* ClientMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientMock.swift; sourceTree = "<group>"; };
AE203026B9AD3DB412439866 /* MediaUploadingPreprocessorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaUploadingPreprocessorTests.swift; sourceTree = "<group>"; };
AE52983FAFB4E0998C00EE8A /* CancellableTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancellableTask.swift; sourceTree = "<group>"; };
AE5DDBEBBA17973ED4638823 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
@ -1126,6 +1131,7 @@
C1198B925F4A88DA74083662 /* OnboardingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingViewModel.swift; sourceTree = "<group>"; };
C2886615BEBAE33A0AA4D5F8 /* RoomScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomScreenModels.swift; sourceTree = "<group>"; };
C2E9B841EE4878283ECDB554 /* InviteUsersScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InviteUsersScreen.swift; sourceTree = "<group>"; };
C2F079B5DBD0D85FEA687AAE /* SDKGeneratedMocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDKGeneratedMocks.swift; sourceTree = "<group>"; };
C352359663A0E52BA20761EE /* LoadableImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadableImage.swift; sourceTree = "<group>"; };
C38AE3617D7619EF30CDD229 /* EmojiMartStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiMartStore.swift; sourceTree = "<group>"; };
C4C89820BB2B88D4EA28131C /* BugReportScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BugReportScreenViewModelProtocol.swift; sourceTree = "<group>"; };
@ -1611,6 +1617,7 @@
248649EBA5BC33DB93698734 /* SessionVerificationControllerProxyMock.swift */,
AAD01F7FC2BBAC7351948595 /* UserProfile+Mock.swift */,
B23135B06B044CB811139D2F /* Generated */,
E5E545F92D01588360A9BAC5 /* SDK */,
);
path = Mocks;
sourceTree = "<group>";
@ -2715,6 +2722,7 @@
isa = PBXGroup;
children = (
57916A1578D8043BB0795441 /* GeneratedMocks.swift */,
C2F079B5DBD0D85FEA687AAE /* SDKGeneratedMocks.swift */,
);
path = Generated;
sourceTree = "<group>";
@ -2959,7 +2967,7 @@
D071F86CD47582B9196C9D16 /* UserDiscoverySection.swift */,
65AAD845E53B0C8B5E0812C2 /* UserDiscoveryService.swift */,
7F615A00DB223FF3280204D2 /* UserDiscoveryServiceProtocol.swift */,
66653C5417592A727B549533 /* UserProfile.swift */,
51C454AE59914B551A6D02C0 /* UserProfileProxy.swift */,
);
path = Users;
sourceTree = "<group>";
@ -2995,6 +3003,14 @@
path = Screens;
sourceTree = "<group>";
};
E5E545F92D01588360A9BAC5 /* SDK */ = {
isa = PBXGroup;
children = (
ADE6170EFE6A161B0A68AB61 /* ClientMock.swift */,
);
path = SDK;
sourceTree = "<group>";
};
E600AACDF87CDBCE32683236 /* Resources */ = {
isa = PBXGroup;
children = (
@ -3334,6 +3350,7 @@
hasScannedForEncodings = 0;
knownRegions = (
Base,
cs,
de,
en,
es,
@ -3718,6 +3735,7 @@
BB6BF528BC7F5B87E08C4F18 /* CameraPicker.swift in Sources */,
E14E469CD97550D0FC58F3CA /* CancellableTask.swift in Sources */,
6A0E7551E0D1793245F34CDD /* ClientError.swift in Sources */,
520EEDAFBC778AB0B41F2F53 /* ClientMock.swift in Sources */,
1950A80CD198BED283DFC2CE /* ClientProxy.swift in Sources */,
24BDDD09A90B8BFE3793F3AA /* ClientProxyProtocol.swift in Sources */,
9FAF6DA7E8E85C9699757764 /* CollapsibleRoomTimelineView.swift in Sources */,
@ -3956,6 +3974,7 @@
CF82143AA4A4F7BD11D22946 /* RoomTimelineViewProvider.swift in Sources */,
B2F8E01ABA1BA30265B4ECBE /* RoundedCornerShape.swift in Sources */,
50C90117FE25390BFBD40173 /* RustTracing.swift in Sources */,
D43F0503EF2CBC55272538FE /* SDKGeneratedMocks.swift in Sources */,
0437765FF480249486893CC7 /* ScreenTrackerViewModifier.swift in Sources */,
0BFA67AFD757EE2BA569836A /* ScrollViewAdapter.swift in Sources */,
14E99D27628B1A6F0CB46FEA /* SeparatorRoomTimelineItem.swift in Sources */,
@ -4063,8 +4082,8 @@
E3291AD16D7A5CB14781819C /* UserNotificationCenterProtocol.swift in Sources */,
40B79D20A873620F7F128A2C /* UserPreference.swift in Sources */,
80DEA2A4B20F9E279EAE6B2B /* UserProfile+Mock.swift in Sources */,
0E6B97E4F4DAC3E5B64B215F /* UserProfile.swift in Sources */,
F94000E3D91B11C527DA8807 /* UserProfileCell.swift in Sources */,
E21FE4C5B614F311C0955859 /* UserProfileProxy.swift in Sources */,
9CCC77C31CB399661A034739 /* UserProperties+Element.swift in Sources */,
8AB8ED1051216546CB35FA0E /* UserSession.swift in Sources */,
4A618590DEB72C4F186BFED4 /* UserSessionFlowCoordinator.swift in Sources */,
@ -4160,6 +4179,7 @@
187853A7E643995EE49FAD43 /* Localizable.stringsdict */ = {
isa = PBXVariantGroup;
children = (
6654859746B0BE9611459391 /* cs */,
AE5DDBEBBA17973ED4638823 /* de */,
13802897C7AFA360EA74C0B0 /* en */,
AACE9B8E1A4AE79A7E2914F6 /* es */,
@ -4173,6 +4193,7 @@
7109E709A7738E6BCC4553E6 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
8D8169443E5AC5FF71BFB3DB /* cs */,
35AFCF4C05DEED04E3DB1A16 /* de */,
CACA846B3E3E9A521D98B178 /* en */,
CBBCC6E74774E79B599625D0 /* es */,

View File

@ -172,7 +172,7 @@
{
"identity" : "swift-snapshot-testing",
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-snapshot-testing.git",
"location" : "https://github.com/pointfreeco/swift-snapshot-testing",
"state" : {
"revision" : "cef5b3f6f11781dd4591bdd1dd0a3d22bd609334",
"version" : "1.11.0"

View File

@ -1094,10 +1094,10 @@ class UserDiscoveryServiceMock: UserDiscoveryServiceProtocol {
}
var searchProfilesWithReceivedSearchQuery: String?
var searchProfilesWithReceivedInvocations: [String] = []
var searchProfilesWithReturnValue: Result<[UserProfile], UserDiscoveryErrorType>!
var searchProfilesWithClosure: ((String) async -> Result<[UserProfile], UserDiscoveryErrorType>)?
var searchProfilesWithReturnValue: Result<[UserProfileProxy], UserDiscoveryErrorType>!
var searchProfilesWithClosure: ((String) async -> Result<[UserProfileProxy], UserDiscoveryErrorType>)?
func searchProfiles(with searchQuery: String) async -> Result<[UserProfile], UserDiscoveryErrorType> {
func searchProfiles(with searchQuery: String) async -> Result<[UserProfileProxy], UserDiscoveryErrorType> {
searchProfilesWithCallsCount += 1
searchProfilesWithReceivedSearchQuery = searchQuery
searchProfilesWithReceivedInvocations.append(searchQuery)
@ -1113,10 +1113,10 @@ class UserDiscoveryServiceMock: UserDiscoveryServiceProtocol {
var fetchSuggestionsCalled: Bool {
return fetchSuggestionsCallsCount > 0
}
var fetchSuggestionsReturnValue: Result<[UserProfile], UserDiscoveryErrorType>!
var fetchSuggestionsClosure: (() async -> Result<[UserProfile], UserDiscoveryErrorType>)?
var fetchSuggestionsReturnValue: Result<[UserProfileProxy], UserDiscoveryErrorType>!
var fetchSuggestionsClosure: (() async -> Result<[UserProfileProxy], UserDiscoveryErrorType>)?
func fetchSuggestions() async -> Result<[UserProfile], UserDiscoveryErrorType> {
func fetchSuggestions() async -> Result<[UserProfileProxy], UserDiscoveryErrorType> {
fetchSuggestionsCallsCount += 1
if let fetchSuggestionsClosure = fetchSuggestionsClosure {
return await fetchSuggestionsClosure()

View File

@ -0,0 +1,646 @@
// Generated using Sourcery 2.0.2 https://github.com/krzysztofzablocki/Sourcery
// DO NOT EDIT
// swiftlint:disable all
import Foundation
import MatrixRustSDK
class SDKClientMock: SDKClientProtocol {
//MARK: - `accountData`
public var accountDataEventTypeThrowableError: Error?
public var accountDataEventTypeCallsCount = 0
public var accountDataEventTypeCalled: Bool {
return accountDataEventTypeCallsCount > 0
}
public var accountDataEventTypeReceivedEventType: String?
public var accountDataEventTypeReceivedInvocations: [String] = []
public var accountDataEventTypeReturnValue: String?
public var accountDataEventTypeClosure: ((String) throws -> String?)?
public func `accountData`(`eventType`: String) throws -> String? {
if let error = accountDataEventTypeThrowableError {
throw error
}
accountDataEventTypeCallsCount += 1
accountDataEventTypeReceivedEventType = eventType
accountDataEventTypeReceivedInvocations.append(`eventType`)
if let accountDataEventTypeClosure = accountDataEventTypeClosure {
return try accountDataEventTypeClosure(`eventType`)
} else {
return accountDataEventTypeReturnValue
}
}
//MARK: - `avatarUrl`
public var avatarUrlThrowableError: Error?
public var avatarUrlCallsCount = 0
public var avatarUrlCalled: Bool {
return avatarUrlCallsCount > 0
}
public var avatarUrlReturnValue: String?
public var avatarUrlClosure: (() throws -> String?)?
public func `avatarUrl`() throws -> String? {
if let error = avatarUrlThrowableError {
throw error
}
avatarUrlCallsCount += 1
if let avatarUrlClosure = avatarUrlClosure {
return try avatarUrlClosure()
} else {
return avatarUrlReturnValue
}
}
//MARK: - `cachedAvatarUrl`
public var cachedAvatarUrlThrowableError: Error?
public var cachedAvatarUrlCallsCount = 0
public var cachedAvatarUrlCalled: Bool {
return cachedAvatarUrlCallsCount > 0
}
public var cachedAvatarUrlReturnValue: String?
public var cachedAvatarUrlClosure: (() throws -> String?)?
public func `cachedAvatarUrl`() throws -> String? {
if let error = cachedAvatarUrlThrowableError {
throw error
}
cachedAvatarUrlCallsCount += 1
if let cachedAvatarUrlClosure = cachedAvatarUrlClosure {
return try cachedAvatarUrlClosure()
} else {
return cachedAvatarUrlReturnValue
}
}
//MARK: - `createRoom`
public var createRoomRequestThrowableError: Error?
public var createRoomRequestCallsCount = 0
public var createRoomRequestCalled: Bool {
return createRoomRequestCallsCount > 0
}
public var createRoomRequestReceivedRequest: CreateRoomParameters?
public var createRoomRequestReceivedInvocations: [CreateRoomParameters] = []
public var createRoomRequestReturnValue: String!
public var createRoomRequestClosure: ((CreateRoomParameters) throws -> String)?
public func `createRoom`(`request`: CreateRoomParameters) throws -> String {
if let error = createRoomRequestThrowableError {
throw error
}
createRoomRequestCallsCount += 1
createRoomRequestReceivedRequest = request
createRoomRequestReceivedInvocations.append(`request`)
if let createRoomRequestClosure = createRoomRequestClosure {
return try createRoomRequestClosure(`request`)
} else {
return createRoomRequestReturnValue
}
}
//MARK: - `deviceId`
public var deviceIdThrowableError: Error?
public var deviceIdCallsCount = 0
public var deviceIdCalled: Bool {
return deviceIdCallsCount > 0
}
public var deviceIdReturnValue: String!
public var deviceIdClosure: (() throws -> String)?
public func `deviceId`() throws -> String {
if let error = deviceIdThrowableError {
throw error
}
deviceIdCallsCount += 1
if let deviceIdClosure = deviceIdClosure {
return try deviceIdClosure()
} else {
return deviceIdReturnValue
}
}
//MARK: - `displayName`
public var displayNameThrowableError: Error?
public var displayNameCallsCount = 0
public var displayNameCalled: Bool {
return displayNameCallsCount > 0
}
public var displayNameReturnValue: String!
public var displayNameClosure: (() throws -> String)?
public func `displayName`() throws -> String {
if let error = displayNameThrowableError {
throw error
}
displayNameCallsCount += 1
if let displayNameClosure = displayNameClosure {
return try displayNameClosure()
} else {
return displayNameReturnValue
}
}
//MARK: - `getDmRoom`
public var getDmRoomUserIdThrowableError: Error?
public var getDmRoomUserIdCallsCount = 0
public var getDmRoomUserIdCalled: Bool {
return getDmRoomUserIdCallsCount > 0
}
public var getDmRoomUserIdReceivedUserId: String?
public var getDmRoomUserIdReceivedInvocations: [String] = []
public var getDmRoomUserIdReturnValue: Room?
public var getDmRoomUserIdClosure: ((String) throws -> Room?)?
public func `getDmRoom`(`userId`: String) throws -> Room? {
if let error = getDmRoomUserIdThrowableError {
throw error
}
getDmRoomUserIdCallsCount += 1
getDmRoomUserIdReceivedUserId = userId
getDmRoomUserIdReceivedInvocations.append(`userId`)
if let getDmRoomUserIdClosure = getDmRoomUserIdClosure {
return try getDmRoomUserIdClosure(`userId`)
} else {
return getDmRoomUserIdReturnValue
}
}
//MARK: - `getMediaContent`
public var getMediaContentMediaSourceThrowableError: Error?
public var getMediaContentMediaSourceCallsCount = 0
public var getMediaContentMediaSourceCalled: Bool {
return getMediaContentMediaSourceCallsCount > 0
}
public var getMediaContentMediaSourceReceivedMediaSource: MediaSource?
public var getMediaContentMediaSourceReceivedInvocations: [MediaSource] = []
public var getMediaContentMediaSourceReturnValue: [UInt8]!
public var getMediaContentMediaSourceClosure: ((MediaSource) throws -> [UInt8])?
public func `getMediaContent`(`mediaSource`: MediaSource) throws -> [UInt8] {
if let error = getMediaContentMediaSourceThrowableError {
throw error
}
getMediaContentMediaSourceCallsCount += 1
getMediaContentMediaSourceReceivedMediaSource = mediaSource
getMediaContentMediaSourceReceivedInvocations.append(`mediaSource`)
if let getMediaContentMediaSourceClosure = getMediaContentMediaSourceClosure {
return try getMediaContentMediaSourceClosure(`mediaSource`)
} else {
return getMediaContentMediaSourceReturnValue
}
}
//MARK: - `getMediaFile`
public var getMediaFileMediaSourceBodyMimeTypeThrowableError: Error?
public var getMediaFileMediaSourceBodyMimeTypeCallsCount = 0
public var getMediaFileMediaSourceBodyMimeTypeCalled: Bool {
return getMediaFileMediaSourceBodyMimeTypeCallsCount > 0
}
public var getMediaFileMediaSourceBodyMimeTypeReceivedArguments: (`mediaSource`: MediaSource, `body`: String?, `mimeType`: String)?
public var getMediaFileMediaSourceBodyMimeTypeReceivedInvocations: [(`mediaSource`: MediaSource, `body`: String?, `mimeType`: String)] = []
public var getMediaFileMediaSourceBodyMimeTypeReturnValue: MediaFileHandle!
public var getMediaFileMediaSourceBodyMimeTypeClosure: ((MediaSource, String?, String) throws -> MediaFileHandle)?
public func `getMediaFile`(`mediaSource`: MediaSource, `body`: String?, `mimeType`: String) throws -> MediaFileHandle {
if let error = getMediaFileMediaSourceBodyMimeTypeThrowableError {
throw error
}
getMediaFileMediaSourceBodyMimeTypeCallsCount += 1
getMediaFileMediaSourceBodyMimeTypeReceivedArguments = (`mediaSource`: `mediaSource`, `body`: `body`, `mimeType`: `mimeType`)
getMediaFileMediaSourceBodyMimeTypeReceivedInvocations.append((`mediaSource`: `mediaSource`, `body`: `body`, `mimeType`: `mimeType`))
if let getMediaFileMediaSourceBodyMimeTypeClosure = getMediaFileMediaSourceBodyMimeTypeClosure {
return try getMediaFileMediaSourceBodyMimeTypeClosure(`mediaSource`, `body`, `mimeType`)
} else {
return getMediaFileMediaSourceBodyMimeTypeReturnValue
}
}
//MARK: - `getMediaThumbnail`
public var getMediaThumbnailMediaSourceWidthHeightThrowableError: Error?
public var getMediaThumbnailMediaSourceWidthHeightCallsCount = 0
public var getMediaThumbnailMediaSourceWidthHeightCalled: Bool {
return getMediaThumbnailMediaSourceWidthHeightCallsCount > 0
}
public var getMediaThumbnailMediaSourceWidthHeightReceivedArguments: (`mediaSource`: MediaSource, `width`: UInt64, `height`: UInt64)?
public var getMediaThumbnailMediaSourceWidthHeightReceivedInvocations: [(`mediaSource`: MediaSource, `width`: UInt64, `height`: UInt64)] = []
public var getMediaThumbnailMediaSourceWidthHeightReturnValue: [UInt8]!
public var getMediaThumbnailMediaSourceWidthHeightClosure: ((MediaSource, UInt64, UInt64) throws -> [UInt8])?
public func `getMediaThumbnail`(`mediaSource`: MediaSource, `width`: UInt64, `height`: UInt64) throws -> [UInt8] {
if let error = getMediaThumbnailMediaSourceWidthHeightThrowableError {
throw error
}
getMediaThumbnailMediaSourceWidthHeightCallsCount += 1
getMediaThumbnailMediaSourceWidthHeightReceivedArguments = (`mediaSource`: `mediaSource`, `width`: `width`, `height`: `height`)
getMediaThumbnailMediaSourceWidthHeightReceivedInvocations.append((`mediaSource`: `mediaSource`, `width`: `width`, `height`: `height`))
if let getMediaThumbnailMediaSourceWidthHeightClosure = getMediaThumbnailMediaSourceWidthHeightClosure {
return try getMediaThumbnailMediaSourceWidthHeightClosure(`mediaSource`, `width`, `height`)
} else {
return getMediaThumbnailMediaSourceWidthHeightReturnValue
}
}
//MARK: - `getNotificationItem`
public var getNotificationItemRoomIdEventIdThrowableError: Error?
public var getNotificationItemRoomIdEventIdCallsCount = 0
public var getNotificationItemRoomIdEventIdCalled: Bool {
return getNotificationItemRoomIdEventIdCallsCount > 0
}
public var getNotificationItemRoomIdEventIdReceivedArguments: (`roomId`: String, `eventId`: String)?
public var getNotificationItemRoomIdEventIdReceivedInvocations: [(`roomId`: String, `eventId`: String)] = []
public var getNotificationItemRoomIdEventIdReturnValue: NotificationItem!
public var getNotificationItemRoomIdEventIdClosure: ((String, String) throws -> NotificationItem)?
public func `getNotificationItem`(`roomId`: String, `eventId`: String) throws -> NotificationItem {
if let error = getNotificationItemRoomIdEventIdThrowableError {
throw error
}
getNotificationItemRoomIdEventIdCallsCount += 1
getNotificationItemRoomIdEventIdReceivedArguments = (`roomId`: `roomId`, `eventId`: `eventId`)
getNotificationItemRoomIdEventIdReceivedInvocations.append((`roomId`: `roomId`, `eventId`: `eventId`))
if let getNotificationItemRoomIdEventIdClosure = getNotificationItemRoomIdEventIdClosure {
return try getNotificationItemRoomIdEventIdClosure(`roomId`, `eventId`)
} else {
return getNotificationItemRoomIdEventIdReturnValue
}
}
//MARK: - `getProfile`
public var getProfileUserIdThrowableError: Error?
public var getProfileUserIdCallsCount = 0
public var getProfileUserIdCalled: Bool {
return getProfileUserIdCallsCount > 0
}
public var getProfileUserIdReceivedUserId: String?
public var getProfileUserIdReceivedInvocations: [String] = []
public var getProfileUserIdReturnValue: UserProfile!
public var getProfileUserIdClosure: ((String) throws -> UserProfile)?
public func `getProfile`(`userId`: String) throws -> UserProfile {
if let error = getProfileUserIdThrowableError {
throw error
}
getProfileUserIdCallsCount += 1
getProfileUserIdReceivedUserId = userId
getProfileUserIdReceivedInvocations.append(`userId`)
if let getProfileUserIdClosure = getProfileUserIdClosure {
return try getProfileUserIdClosure(`userId`)
} else {
return getProfileUserIdReturnValue
}
}
//MARK: - `getSessionVerificationController`
public var getSessionVerificationControllerThrowableError: Error?
public var getSessionVerificationControllerCallsCount = 0
public var getSessionVerificationControllerCalled: Bool {
return getSessionVerificationControllerCallsCount > 0
}
public var getSessionVerificationControllerReturnValue: SessionVerificationController!
public var getSessionVerificationControllerClosure: (() throws -> SessionVerificationController)?
public func `getSessionVerificationController`() throws -> SessionVerificationController {
if let error = getSessionVerificationControllerThrowableError {
throw error
}
getSessionVerificationControllerCallsCount += 1
if let getSessionVerificationControllerClosure = getSessionVerificationControllerClosure {
return try getSessionVerificationControllerClosure()
} else {
return getSessionVerificationControllerReturnValue
}
}
//MARK: - `homeserver`
public var homeserverCallsCount = 0
public var homeserverCalled: Bool {
return homeserverCallsCount > 0
}
public var homeserverReturnValue: String!
public var homeserverClosure: (() -> String)?
public func `homeserver`() -> String {
homeserverCallsCount += 1
if let homeserverClosure = homeserverClosure {
return homeserverClosure()
} else {
return homeserverReturnValue
}
}
//MARK: - `ignoreUser`
public var ignoreUserUserIdThrowableError: Error?
public var ignoreUserUserIdCallsCount = 0
public var ignoreUserUserIdCalled: Bool {
return ignoreUserUserIdCallsCount > 0
}
public var ignoreUserUserIdReceivedUserId: String?
public var ignoreUserUserIdReceivedInvocations: [String] = []
public var ignoreUserUserIdClosure: ((String) throws -> Void)?
public func `ignoreUser`(`userId`: String) throws {
if let error = ignoreUserUserIdThrowableError {
throw error
}
ignoreUserUserIdCallsCount += 1
ignoreUserUserIdReceivedUserId = userId
ignoreUserUserIdReceivedInvocations.append(`userId`)
try ignoreUserUserIdClosure?(`userId`)
}
//MARK: - `login`
public var loginUsernamePasswordInitialDeviceNameDeviceIdThrowableError: Error?
public var loginUsernamePasswordInitialDeviceNameDeviceIdCallsCount = 0
public var loginUsernamePasswordInitialDeviceNameDeviceIdCalled: Bool {
return loginUsernamePasswordInitialDeviceNameDeviceIdCallsCount > 0
}
public var loginUsernamePasswordInitialDeviceNameDeviceIdReceivedArguments: (`username`: String, `password`: String, `initialDeviceName`: String?, `deviceId`: String?)?
public var loginUsernamePasswordInitialDeviceNameDeviceIdReceivedInvocations: [(`username`: String, `password`: String, `initialDeviceName`: String?, `deviceId`: String?)] = []
public var loginUsernamePasswordInitialDeviceNameDeviceIdClosure: ((String, String, String?, String?) throws -> Void)?
public func `login`(`username`: String, `password`: String, `initialDeviceName`: String?, `deviceId`: String?) throws {
if let error = loginUsernamePasswordInitialDeviceNameDeviceIdThrowableError {
throw error
}
loginUsernamePasswordInitialDeviceNameDeviceIdCallsCount += 1
loginUsernamePasswordInitialDeviceNameDeviceIdReceivedArguments = (`username`: `username`, `password`: `password`, `initialDeviceName`: `initialDeviceName`, `deviceId`: `deviceId`)
loginUsernamePasswordInitialDeviceNameDeviceIdReceivedInvocations.append((`username`: `username`, `password`: `password`, `initialDeviceName`: `initialDeviceName`, `deviceId`: `deviceId`))
try loginUsernamePasswordInitialDeviceNameDeviceIdClosure?(`username`, `password`, `initialDeviceName`, `deviceId`)
}
//MARK: - `logout`
public var logoutThrowableError: Error?
public var logoutCallsCount = 0
public var logoutCalled: Bool {
return logoutCallsCount > 0
}
public var logoutClosure: (() throws -> Void)?
public func `logout`() throws {
if let error = logoutThrowableError {
throw error
}
logoutCallsCount += 1
try logoutClosure?()
}
//MARK: - `restoreSession`
public var restoreSessionSessionThrowableError: Error?
public var restoreSessionSessionCallsCount = 0
public var restoreSessionSessionCalled: Bool {
return restoreSessionSessionCallsCount > 0
}
public var restoreSessionSessionReceivedSession: Session?
public var restoreSessionSessionReceivedInvocations: [Session] = []
public var restoreSessionSessionClosure: ((Session) throws -> Void)?
public func `restoreSession`(`session`: Session) throws {
if let error = restoreSessionSessionThrowableError {
throw error
}
restoreSessionSessionCallsCount += 1
restoreSessionSessionReceivedSession = session
restoreSessionSessionReceivedInvocations.append(`session`)
try restoreSessionSessionClosure?(`session`)
}
//MARK: - `rooms`
public var roomsCallsCount = 0
public var roomsCalled: Bool {
return roomsCallsCount > 0
}
public var roomsReturnValue: [Room]!
public var roomsClosure: (() -> [Room])?
public func `rooms`() -> [Room] {
roomsCallsCount += 1
if let roomsClosure = roomsClosure {
return roomsClosure()
} else {
return roomsReturnValue
}
}
//MARK: - `searchUsers`
public var searchUsersSearchTermLimitThrowableError: Error?
public var searchUsersSearchTermLimitCallsCount = 0
public var searchUsersSearchTermLimitCalled: Bool {
return searchUsersSearchTermLimitCallsCount > 0
}
public var searchUsersSearchTermLimitReceivedArguments: (`searchTerm`: String, `limit`: UInt64)?
public var searchUsersSearchTermLimitReceivedInvocations: [(`searchTerm`: String, `limit`: UInt64)] = []
public var searchUsersSearchTermLimitReturnValue: SearchUsersResults!
public var searchUsersSearchTermLimitClosure: ((String, UInt64) throws -> SearchUsersResults)?
public func `searchUsers`(`searchTerm`: String, `limit`: UInt64) throws -> SearchUsersResults {
if let error = searchUsersSearchTermLimitThrowableError {
throw error
}
searchUsersSearchTermLimitCallsCount += 1
searchUsersSearchTermLimitReceivedArguments = (`searchTerm`: `searchTerm`, `limit`: `limit`)
searchUsersSearchTermLimitReceivedInvocations.append((`searchTerm`: `searchTerm`, `limit`: `limit`))
if let searchUsersSearchTermLimitClosure = searchUsersSearchTermLimitClosure {
return try searchUsersSearchTermLimitClosure(`searchTerm`, `limit`)
} else {
return searchUsersSearchTermLimitReturnValue
}
}
//MARK: - `session`
public var sessionThrowableError: Error?
public var sessionCallsCount = 0
public var sessionCalled: Bool {
return sessionCallsCount > 0
}
public var sessionReturnValue: Session!
public var sessionClosure: (() throws -> Session)?
public func `session`() throws -> Session {
if let error = sessionThrowableError {
throw error
}
sessionCallsCount += 1
if let sessionClosure = sessionClosure {
return try sessionClosure()
} else {
return sessionReturnValue
}
}
//MARK: - `setAccountData`
public var setAccountDataEventTypeContentThrowableError: Error?
public var setAccountDataEventTypeContentCallsCount = 0
public var setAccountDataEventTypeContentCalled: Bool {
return setAccountDataEventTypeContentCallsCount > 0
}
public var setAccountDataEventTypeContentReceivedArguments: (`eventType`: String, `content`: String)?
public var setAccountDataEventTypeContentReceivedInvocations: [(`eventType`: String, `content`: String)] = []
public var setAccountDataEventTypeContentClosure: ((String, String) throws -> Void)?
public func `setAccountData`(`eventType`: String, `content`: String) throws {
if let error = setAccountDataEventTypeContentThrowableError {
throw error
}
setAccountDataEventTypeContentCallsCount += 1
setAccountDataEventTypeContentReceivedArguments = (`eventType`: `eventType`, `content`: `content`)
setAccountDataEventTypeContentReceivedInvocations.append((`eventType`: `eventType`, `content`: `content`))
try setAccountDataEventTypeContentClosure?(`eventType`, `content`)
}
//MARK: - `setDelegate`
public var setDelegateDelegateCallsCount = 0
public var setDelegateDelegateCalled: Bool {
return setDelegateDelegateCallsCount > 0
}
public var setDelegateDelegateReceivedDelegate: ClientDelegate?
public var setDelegateDelegateReceivedInvocations: [ClientDelegate?] = []
public var setDelegateDelegateClosure: ((ClientDelegate?) -> Void)?
public func `setDelegate`(`delegate`: ClientDelegate?) {
setDelegateDelegateCallsCount += 1
setDelegateDelegateReceivedDelegate = delegate
setDelegateDelegateReceivedInvocations.append(`delegate`)
setDelegateDelegateClosure?(`delegate`)
}
//MARK: - `setDisplayName`
public var setDisplayNameNameThrowableError: Error?
public var setDisplayNameNameCallsCount = 0
public var setDisplayNameNameCalled: Bool {
return setDisplayNameNameCallsCount > 0
}
public var setDisplayNameNameReceivedName: String?
public var setDisplayNameNameReceivedInvocations: [String] = []
public var setDisplayNameNameClosure: ((String) throws -> Void)?
public func `setDisplayName`(`name`: String) throws {
if let error = setDisplayNameNameThrowableError {
throw error
}
setDisplayNameNameCallsCount += 1
setDisplayNameNameReceivedName = name
setDisplayNameNameReceivedInvocations.append(`name`)
try setDisplayNameNameClosure?(`name`)
}
//MARK: - `setNotificationDelegate`
public var setNotificationDelegateNotificationDelegateCallsCount = 0
public var setNotificationDelegateNotificationDelegateCalled: Bool {
return setNotificationDelegateNotificationDelegateCallsCount > 0
}
public var setNotificationDelegateNotificationDelegateReceivedNotificationDelegate: NotificationDelegate?
public var setNotificationDelegateNotificationDelegateReceivedInvocations: [NotificationDelegate?] = []
public var setNotificationDelegateNotificationDelegateClosure: ((NotificationDelegate?) -> Void)?
public func `setNotificationDelegate`(`notificationDelegate`: NotificationDelegate?) {
setNotificationDelegateNotificationDelegateCallsCount += 1
setNotificationDelegateNotificationDelegateReceivedNotificationDelegate = notificationDelegate
setNotificationDelegateNotificationDelegateReceivedInvocations.append(`notificationDelegate`)
setNotificationDelegateNotificationDelegateClosure?(`notificationDelegate`)
}
//MARK: - `setPusher`
public var setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangThrowableError: Error?
public var setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangCallsCount = 0
public var setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangCalled: Bool {
return setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangCallsCount > 0
}
public var setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangReceivedArguments: (`identifiers`: PusherIdentifiers, `kind`: PusherKind, `appDisplayName`: String, `deviceDisplayName`: String, `profileTag`: String?, `lang`: String)?
public var setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangReceivedInvocations: [(`identifiers`: PusherIdentifiers, `kind`: PusherKind, `appDisplayName`: String, `deviceDisplayName`: String, `profileTag`: String?, `lang`: String)] = []
public var setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangClosure: ((PusherIdentifiers, PusherKind, String, String, String?, String) throws -> Void)?
public func `setPusher`(`identifiers`: PusherIdentifiers, `kind`: PusherKind, `appDisplayName`: String, `deviceDisplayName`: String, `profileTag`: String?, `lang`: String) throws {
if let error = setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangThrowableError {
throw error
}
setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangCallsCount += 1
setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangReceivedArguments = (`identifiers`: `identifiers`, `kind`: `kind`, `appDisplayName`: `appDisplayName`, `deviceDisplayName`: `deviceDisplayName`, `profileTag`: `profileTag`, `lang`: `lang`)
setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangReceivedInvocations.append((`identifiers`: `identifiers`, `kind`: `kind`, `appDisplayName`: `appDisplayName`, `deviceDisplayName`: `deviceDisplayName`, `profileTag`: `profileTag`, `lang`: `lang`))
try setPusherIdentifiersKindAppDisplayNameDeviceDisplayNameProfileTagLangClosure?(`identifiers`, `kind`, `appDisplayName`, `deviceDisplayName`, `profileTag`, `lang`)
}
//MARK: - `slidingSync`
public var slidingSyncCallsCount = 0
public var slidingSyncCalled: Bool {
return slidingSyncCallsCount > 0
}
public var slidingSyncReturnValue: SlidingSyncBuilder!
public var slidingSyncClosure: (() -> SlidingSyncBuilder)?
public func `slidingSync`() -> SlidingSyncBuilder {
slidingSyncCallsCount += 1
if let slidingSyncClosure = slidingSyncClosure {
return slidingSyncClosure()
} else {
return slidingSyncReturnValue
}
}
//MARK: - `unignoreUser`
public var unignoreUserUserIdThrowableError: Error?
public var unignoreUserUserIdCallsCount = 0
public var unignoreUserUserIdCalled: Bool {
return unignoreUserUserIdCallsCount > 0
}
public var unignoreUserUserIdReceivedUserId: String?
public var unignoreUserUserIdReceivedInvocations: [String] = []
public var unignoreUserUserIdClosure: ((String) throws -> Void)?
public func `unignoreUser`(`userId`: String) throws {
if let error = unignoreUserUserIdThrowableError {
throw error
}
unignoreUserUserIdCallsCount += 1
unignoreUserUserIdReceivedUserId = userId
unignoreUserUserIdReceivedInvocations.append(`userId`)
try unignoreUserUserIdClosure?(`userId`)
}
//MARK: - `uploadMedia`
public var uploadMediaMimeTypeDataThrowableError: Error?
public var uploadMediaMimeTypeDataCallsCount = 0
public var uploadMediaMimeTypeDataCalled: Bool {
return uploadMediaMimeTypeDataCallsCount > 0
}
public var uploadMediaMimeTypeDataReceivedArguments: (`mimeType`: String, `data`: [UInt8])?
public var uploadMediaMimeTypeDataReceivedInvocations: [(`mimeType`: String, `data`: [UInt8])] = []
public var uploadMediaMimeTypeDataReturnValue: String!
public var uploadMediaMimeTypeDataClosure: ((String, [UInt8]) throws -> String)?
public func `uploadMedia`(`mimeType`: String, `data`: [UInt8]) throws -> String {
if let error = uploadMediaMimeTypeDataThrowableError {
throw error
}
uploadMediaMimeTypeDataCallsCount += 1
uploadMediaMimeTypeDataReceivedArguments = (`mimeType`: `mimeType`, `data`: `data`)
uploadMediaMimeTypeDataReceivedInvocations.append((`mimeType`: `mimeType`, `data`: `data`))
if let uploadMediaMimeTypeDataClosure = uploadMediaMimeTypeDataClosure {
return try uploadMediaMimeTypeDataClosure(`mimeType`, `data`)
} else {
return uploadMediaMimeTypeDataReturnValue
}
}
//MARK: - `userId`
public var userIdThrowableError: Error?
public var userIdCallsCount = 0
public var userIdCalled: Bool {
return userIdCallsCount > 0
}
public var userIdReturnValue: String!
public var userIdClosure: (() throws -> String)?
public func `userId`() throws -> String {
if let error = userIdThrowableError {
throw error
}
userIdCallsCount += 1
if let userIdClosure = userIdClosure {
return try userIdClosure()
} else {
return userIdReturnValue
}
}
}
// swiftlint:enable all

View File

@ -0,0 +1,21 @@
//
// Copyright 2023 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import Foundation
import MatrixRustSDK
// sourcery: AutoMockable
protocol SDKClientProtocol: ClientProtocol { }

View File

@ -16,21 +16,21 @@
import Foundation
extension UserProfile {
extension UserProfileProxy {
// Mocks
static var mockAlice: UserProfile {
static var mockAlice: UserProfileProxy {
.init(userID: "@alice:matrix.org", displayName: "Alice", avatarURL: URL(staticString: "mxc://matrix.org/UcCimidcvpFvWkPzvjXMQPHA"))
}
static var mockBob: UserProfile {
static var mockBob: UserProfileProxy {
.init(userID: "@bob:matrix.org", displayName: "Bob", avatarURL: nil)
}
static var mockBobby: UserProfile {
static var mockBobby: UserProfileProxy {
.init(userID: "@bobby:matrix.org", displayName: "Bobby", avatarURL: nil)
}
static var mockCharlie: UserProfile {
static var mockCharlie: UserProfileProxy {
.init(userID: "@charlie:matrix.org", displayName: "Charlie", avatarURL: nil)
}
}

View File

@ -18,7 +18,7 @@ import MatrixRustSDK
import SwiftUI
struct UserProfileCell: View {
let user: UserProfile
let user: UserProfileProxy
let membership: MembershipState?
let imageProvider: ImageProviderProtocol?

View File

@ -21,12 +21,12 @@ struct CreateRoomCoordinatorParameters {
let userSession: UserSessionProtocol
weak var userIndicatorController: UserIndicatorControllerProtocol?
let createRoomParameters: CurrentValuePublisher<CreateRoomFlowParameters, Never>
let selectedUsers: CurrentValuePublisher<[UserProfile], Never>
let selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>
}
enum CreateRoomCoordinatorAction {
case openRoom(withIdentifier: String)
case deselectUser(UserProfile)
case deselectUser(UserProfileProxy)
case updateDetails(CreateRoomFlowParameters)
}

View File

@ -23,12 +23,12 @@ enum CreateRoomScreenErrorType: Error {
enum CreateRoomViewModelAction {
case openRoom(withIdentifier: String)
case deselectUser(UserProfile)
case deselectUser(UserProfileProxy)
case updateDetails(CreateRoomFlowParameters)
}
struct CreateRoomViewState: BindableState {
var selectedUsers: [UserProfile]
var selectedUsers: [UserProfileProxy]
var bindings: CreateRoomViewStateBindings
var canCreateRoom: Bool {
@ -47,5 +47,5 @@ struct CreateRoomViewStateBindings {
enum CreateRoomViewAction {
case createRoom
case deselectUser(UserProfile)
case deselectUser(UserProfileProxy)
}

View File

@ -32,7 +32,7 @@ class CreateRoomViewModel: CreateRoomViewModelType, CreateRoomViewModelProtocol
init(userSession: UserSessionProtocol,
userIndicatorController: UserIndicatorControllerProtocol?,
createRoomParameters: CurrentValuePublisher<CreateRoomFlowParameters, Never>,
selectedUsers: CurrentValuePublisher<[UserProfile], Never>) {
selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>) {
let parameters = createRoomParameters.value
self.userSession = userSession
self.userIndicatorController = userIndicatorController

View File

@ -164,7 +164,7 @@ struct CreateRoom_Previews: PreviewProvider {
let userSession = MockUserSession(clientProxy: MockClientProxy(userID: "@userid:example.com"),
mediaProvider: MockMediaProvider())
let parameters = CreateRoomFlowParameters()
let selectedUsers: [UserProfile] = [.mockAlice, .mockBob, .mockCharlie]
let selectedUsers: [UserProfileProxy] = [.mockAlice, .mockBob, .mockCharlie]
return CreateRoomViewModel(userSession: userSession, userIndicatorController: nil, createRoomParameters: .init(parameters), selectedUsers: .init(selectedUsers))
}()

View File

@ -18,7 +18,7 @@ import Combine
import SwiftUI
struct InviteUsersScreenCoordinatorParameters {
let selectedUsers: CurrentValuePublisher<[UserProfile], Never>
let selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>
let roomType: InviteUsersScreenRoomType
let mediaProvider: MediaProviderProtocol
let userDiscoveryService: UserDiscoveryServiceProtocol
@ -27,7 +27,7 @@ struct InviteUsersScreenCoordinatorParameters {
enum InviteUsersScreenCoordinatorAction {
case proceed
case invite(users: [String])
case toggleUser(UserProfile)
case toggleUser(UserProfileProxy)
}
final class InviteUsersScreenCoordinator: CoordinatorProtocol {

View File

@ -24,7 +24,7 @@ enum InviteUsersScreenErrorType: Error {
enum InviteUsersScreenViewModelAction {
case proceed
case invite(users: [String])
case toggleUser(UserProfile)
case toggleUser(UserProfileProxy)
}
enum InviteUsersScreenRoomType {
@ -37,7 +37,7 @@ struct InviteUsersScreenViewState: BindableState {
var usersSection: UserDiscoverySection = .init(type: .suggestions, users: [])
var selectedUsers: [UserProfile] = []
var selectedUsers: [UserProfileProxy] = []
var membershipState: [String: MembershipState] = .init()
var isSearching: Bool {
@ -50,16 +50,16 @@ struct InviteUsersScreenViewState: BindableState {
var scrollToLastID: String?
func isUserSelected(_ user: UserProfile) -> Bool {
func isUserSelected(_ user: UserProfileProxy) -> Bool {
isUserDisabled(user) || selectedUsers.contains { $0.userID == user.userID }
}
func isUserDisabled(_ user: UserProfile) -> Bool {
func isUserDisabled(_ user: UserProfileProxy) -> Bool {
let membershipState = membershipState(user)
return membershipState == .invite || membershipState == .join
}
func membershipState(_ user: UserProfile) -> MembershipState? {
func membershipState(_ user: UserProfileProxy) -> MembershipState? {
membershipState[user.userID]
}
@ -87,5 +87,5 @@ struct InviteUsersScreenViewStateBindings {
enum InviteUsersScreenViewAction {
case proceed
case toggleUser(UserProfile)
case toggleUser(UserProfileProxy)
}

View File

@ -30,7 +30,7 @@ class InviteUsersScreenViewModel: InviteUsersScreenViewModelType, InviteUsersScr
actionsSubject.eraseToAnyPublisher()
}
init(selectedUsers: CurrentValuePublisher<[UserProfile], Never>,
init(selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>,
roomType: InviteUsersScreenRoomType,
mediaProvider: MediaProviderProtocol,
userDiscoveryService: UserDiscoveryServiceProtocol) {
@ -85,7 +85,7 @@ class InviteUsersScreenViewModel: InviteUsersScreenViewModelType, InviteUsersScr
@CancellableTask
private var fetchUsersTask: Task<Void, Never>?
private func setupSubscriptions(selectedUsers: CurrentValuePublisher<[UserProfile], Never>) {
private func setupSubscriptions(selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>) {
context.$viewState
.map(\.bindings.searchQuery)
.debounceAndRemoveDuplicates()
@ -125,7 +125,7 @@ class InviteUsersScreenViewModel: InviteUsersScreenViewModelType, InviteUsersScr
}
}
private func handleResult(for sectionType: UserDiscoverySectionType, result: Result<[UserProfile], UserDiscoveryErrorType>) {
private func handleResult(for sectionType: UserDiscoverySectionType, result: Result<[UserProfileProxy], UserDiscoveryErrorType>) {
switch result {
case .success(let users):
state.usersSection = .init(type: sectionType, users: users)

View File

@ -123,7 +123,7 @@ struct InviteUsersScreen: View {
.disabled(context.viewState.isActionDisabled)
}
private func deselect(_ user: UserProfile) {
private func deselect(_ user: UserProfileProxy) {
context.send(viewAction: .toggleUser(user))
}
}

View File

@ -17,7 +17,7 @@
import SwiftUI
struct InviteUsersScreenSelectedItem: View {
let user: UserProfile
let user: UserProfileProxy
let imageProvider: ImageProviderProtocol?
let dismissAction: () -> Void

View File

@ -33,7 +33,7 @@ final class RoomDetailsScreenCoordinator: CoordinatorProtocol {
private let parameters: RoomDetailsScreenCoordinatorParameters
private var viewModel: RoomDetailsScreenViewModelProtocol
private var cancellables: Set<AnyCancellable> = .init()
private let selectedUsers: CurrentValueSubject<[UserProfile], Never> = .init([])
private let selectedUsers: CurrentValueSubject<[UserProfileProxy], Never> = .init([])
private var navigationStackCoordinator: NavigationStackCoordinator {
parameters.navigationStackCoordinator
}
@ -142,7 +142,7 @@ final class RoomDetailsScreenCoordinator: CoordinatorProtocol {
parameters.navigationStackCoordinator.setSheetCoordinator(userIndicatorController)
}
private func toggleUser(_ user: UserProfile) {
private func toggleUser(_ user: UserProfileProxy) {
var selectedUsers = selectedUsers.value
if let index = selectedUsers.firstIndex(where: { $0.userID == user.userID }) {
selectedUsers.remove(at: index)

View File

@ -40,8 +40,8 @@ final class StartChatScreenCoordinator: CoordinatorProtocol {
createRoomParameters.asCurrentValuePublisher()
}
private let selectedUsers = CurrentValueSubject<[UserProfile], Never>([])
private var selectedUsersPublisher: CurrentValuePublisher<[UserProfile], Never> {
private let selectedUsers = CurrentValueSubject<[UserProfileProxy], Never>([])
private var selectedUsersPublisher: CurrentValuePublisher<[UserProfileProxy], Never> {
selectedUsers.asCurrentValuePublisher()
}
@ -128,7 +128,7 @@ final class StartChatScreenCoordinator: CoordinatorProtocol {
// MARK: - Private
private func toggleUser(_ user: UserProfile) {
private func toggleUser(_ user: UserProfileProxy) {
var selectedUsers = selectedUsers.value
if let index = selectedUsers.firstIndex(where: { $0.userID == user.userID }) {
selectedUsers.remove(at: index)

View File

@ -51,5 +51,5 @@ struct StartChatScreenViewStateBindings {
enum StartChatScreenViewAction {
case close
case createRoom
case selectUser(UserProfile)
case selectUser(UserProfileProxy)
}

View File

@ -117,7 +117,7 @@ class StartChatScreenViewModel: StartChatScreenViewModelType, StartChatScreenVie
}
}
private func handleResult(for sectionType: UserDiscoverySectionType, result: Result<[UserProfile], UserDiscoveryErrorType>) {
private func handleResult(for sectionType: UserDiscoverySectionType, result: Result<[UserProfileProxy], UserDiscoveryErrorType>) {
switch result {
case .success(let users):
state.usersSection = .init(type: sectionType, users: users)
@ -126,7 +126,7 @@ class StartChatScreenViewModel: StartChatScreenViewModelType, StartChatScreenVie
}
}
private func createDirectRoom(with user: UserProfile) async {
private func createDirectRoom(with user: UserProfileProxy) async {
defer {
hideLoadingIndicator()
}

View File

@ -351,7 +351,7 @@ class ClientProxy: ClientProxyProtocol {
}
}
func searchUsers(searchTerm: String, limit: UInt) async -> Result<SearchUsersResults, ClientProxyError> {
func searchUsers(searchTerm: String, limit: UInt) async -> Result<SearchUsersResultsProxy, ClientProxyError> {
await Task.dispatch(on: clientQueue) {
do {
return try .success(.init(sdkResults: self.client.searchUsers(searchTerm: searchTerm, limit: UInt64(limit))))
@ -361,7 +361,7 @@ class ClientProxy: ClientProxyProtocol {
}
}
func profile(for userID: String) async -> Result<UserProfile, ClientProxyError> {
func profile(for userID: String) async -> Result<UserProfileProxy, ClientProxyError> {
await Task.dispatch(on: clientQueue) {
do {
return try .success(.init(sdkUserProfile: self.client.getProfile(userId: userID)))

View File

@ -110,7 +110,7 @@ protocol ClientProxyProtocol: AnyObject, MediaLoaderProtocol {
func setPusher(with configuration: PusherConfiguration) async throws
func searchUsers(searchTerm: String, limit: UInt) async -> Result<SearchUsersResults, ClientProxyError>
func searchUsers(searchTerm: String, limit: UInt) async -> Result<SearchUsersResultsProxy, ClientProxyError>
func profile(for userID: String) async -> Result<UserProfile, ClientProxyError>
func profile(for userID: String) async -> Result<UserProfileProxy, ClientProxyError>
}

View File

@ -127,14 +127,14 @@ class MockClientProxy: ClientProxyProtocol {
setPusherArgument = configuration
}
var searchUsersResult: Result<SearchUsersResults, ClientProxyError> = .success(.init(results: [], limited: false))
func searchUsers(searchTerm: String, limit: UInt) async -> Result<SearchUsersResults, ClientProxyError> {
var searchUsersResult: Result<SearchUsersResultsProxy, ClientProxyError> = .success(.init(results: [], limited: false))
func searchUsers(searchTerm: String, limit: UInt) async -> Result<SearchUsersResultsProxy, ClientProxyError> {
searchUsersResult
}
var getProfileResult: Result<UserProfile, ClientProxyError> = .success(.init(userID: "@a:b.com", displayName: "Some user"))
var getProfileResult: Result<UserProfileProxy, ClientProxyError> = .success(.init(userID: "@a:b.com", displayName: "Some user"))
private(set) var getProfileCalled = false
func profile(for userID: String) async -> Result<UserProfile, ClientProxyError> {
func profile(for userID: String) async -> Result<UserProfileProxy, ClientProxyError> {
getProfileCalled = true
return getProfileResult
}