mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-05 11:58:32 +00:00
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
This commit is contained in:
@@ -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)))
|
||||
|
||||
@@ -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>
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
//
|
||||
|
||||
import Combine
|
||||
import MatrixRustSDK
|
||||
|
||||
struct MockRoomTimelineProvider: RoomTimelineProviderProtocol {
|
||||
var itemsPublisher = CurrentValuePublisher<[TimelineItemProxy], Never>([])
|
||||
|
||||
@@ -18,7 +18,7 @@ import Foundation
|
||||
|
||||
struct UserDiscoverySection {
|
||||
let type: UserDiscoverySectionType
|
||||
let users: [UserProfile]
|
||||
let users: [UserProfileProxy]
|
||||
|
||||
var title: String? {
|
||||
switch type {
|
||||
|
||||
@@ -23,11 +23,11 @@ final class UserDiscoveryService: UserDiscoveryServiceProtocol {
|
||||
self.clientProxy = clientProxy
|
||||
}
|
||||
|
||||
func fetchSuggestions() async -> Result<[UserProfile], UserDiscoveryErrorType> {
|
||||
func fetchSuggestions() async -> Result<[UserProfileProxy], UserDiscoveryErrorType> {
|
||||
.success([.mockAlice, .mockBob, .mockCharlie])
|
||||
}
|
||||
|
||||
func searchProfiles(with searchQuery: String) async -> Result<[UserProfile], UserDiscoveryErrorType> {
|
||||
func searchProfiles(with searchQuery: String) async -> Result<[UserProfileProxy], UserDiscoveryErrorType> {
|
||||
do {
|
||||
async let queriedProfile = try? profileIfPossible(with: searchQuery).get()
|
||||
async let searchedUsers = clientProxy.searchUsers(searchTerm: searchQuery, limit: 5)
|
||||
@@ -38,8 +38,8 @@ final class UserDiscoveryService: UserDiscoveryServiceProtocol {
|
||||
}
|
||||
}
|
||||
|
||||
private func merge(searchQuery: String, queriedProfile: UserProfile?, searchResults: SearchUsersResults) -> [UserProfile] {
|
||||
let localProfile = queriedProfile ?? UserProfile(searchQuery: searchQuery)
|
||||
private func merge(searchQuery: String, queriedProfile: UserProfileProxy?, searchResults: SearchUsersResultsProxy) -> [UserProfileProxy] {
|
||||
let localProfile = queriedProfile ?? UserProfileProxy(searchQuery: searchQuery)
|
||||
let searchResults = searchResults.results
|
||||
guard let localProfile else {
|
||||
return searchResults
|
||||
@@ -52,7 +52,7 @@ final class UserDiscoveryService: UserDiscoveryServiceProtocol {
|
||||
return [localProfile] + filteredSearchResult
|
||||
}
|
||||
|
||||
private func profileIfPossible(with searchQuery: String) async -> Result<UserProfile, ClientProxyError> {
|
||||
private func profileIfPossible(with searchQuery: String) async -> Result<UserProfileProxy, ClientProxyError> {
|
||||
guard searchQuery.isMatrixIdentifier else {
|
||||
return .failure(.failedGettingUserProfile)
|
||||
}
|
||||
@@ -67,7 +67,7 @@ private extension String {
|
||||
}
|
||||
}
|
||||
|
||||
private extension UserProfile {
|
||||
private extension UserProfileProxy {
|
||||
init?(searchQuery: String) {
|
||||
guard searchQuery.isMatrixIdentifier else {
|
||||
return nil
|
||||
|
||||
@@ -23,6 +23,6 @@ enum UserDiscoveryErrorType: Error {
|
||||
|
||||
// sourcery: AutoMockable
|
||||
protocol UserDiscoveryServiceProtocol {
|
||||
func searchProfiles(with searchQuery: String) async -> Result<[UserProfile], UserDiscoveryErrorType>
|
||||
func fetchSuggestions() async -> Result<[UserProfile], UserDiscoveryErrorType>
|
||||
func searchProfiles(with searchQuery: String) async -> Result<[UserProfileProxy], UserDiscoveryErrorType>
|
||||
func fetchSuggestions() async -> Result<[UserProfileProxy], UserDiscoveryErrorType>
|
||||
}
|
||||
|
||||
+5
-5
@@ -17,7 +17,7 @@
|
||||
import Foundation
|
||||
import MatrixRustSDK
|
||||
|
||||
struct UserProfile {
|
||||
struct UserProfileProxy {
|
||||
let userID: String
|
||||
let displayName: String?
|
||||
let avatarURL: URL?
|
||||
@@ -41,14 +41,14 @@ struct UserProfile {
|
||||
}
|
||||
}
|
||||
|
||||
struct SearchUsersResults {
|
||||
let results: [UserProfile]
|
||||
struct SearchUsersResultsProxy {
|
||||
let results: [UserProfileProxy]
|
||||
let limited: Bool
|
||||
}
|
||||
|
||||
extension SearchUsersResults {
|
||||
extension SearchUsersResultsProxy {
|
||||
init(sdkResults: MatrixRustSDK.SearchUsersResults) {
|
||||
results = sdkResults.results.map(UserProfile.init)
|
||||
results = sdkResults.results.map(UserProfileProxy.init)
|
||||
limited = sdkResults.limited
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user