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:
Mauro
2023-05-30 09:48:55 +02:00
committed by GitHub
parent 25e2b05a4a
commit 088ca622a1
39 changed files with 857 additions and 194 deletions
@@ -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>
}
@@ -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
}
}