* Use the old state machine configuration style. * Test starting the space settings flow in UI tests. * Test starting the create space room flow in UI tests.
79 lines
3.1 KiB
Swift
79 lines
3.1 KiB
Swift
//
|
|
// Copyright 2025 Element Creations Ltd.
|
|
// Copyright 2025 New Vector Ltd.
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
|
// Please see LICENSE files in the repository root for full details.
|
|
//
|
|
|
|
import Combine
|
|
import Foundation
|
|
import MatrixRustSDK
|
|
import MatrixRustSDKMocks
|
|
|
|
enum SpaceServiceProxyMockError: Error {
|
|
case generic
|
|
}
|
|
|
|
extension SpaceServiceProxyMock {
|
|
struct Configuration {
|
|
var topLevelSpaces: [SpaceServiceRoom] = []
|
|
var spaceFilters: [SpaceServiceFilter] = []
|
|
var joinedParentSpaces: [SpaceServiceRoom] = []
|
|
var editableSpaces: [SpaceServiceRoom] = []
|
|
var spaceRoomLists: [String: SpaceRoomListProxyMock] = [:]
|
|
var spaceRooms: [SpaceServiceRoom] = []
|
|
var leaveSpaceRooms: [LeaveSpaceRoom] = []
|
|
}
|
|
|
|
convenience init(_ configuration: Configuration) {
|
|
self.init()
|
|
|
|
topLevelSpacesPublisher = .init(configuration.topLevelSpaces)
|
|
spaceFilterPublisher = .init(configuration.spaceFilters)
|
|
|
|
joinedParentsChildIDReturnValue = .success(configuration.joinedParentSpaces)
|
|
editableSpacesReturnValue = configuration.editableSpaces
|
|
spaceRoomListSpaceIDClosure = { spaceID in
|
|
if let spaceRoomList = configuration.spaceRoomLists[spaceID] {
|
|
.success(spaceRoomList)
|
|
} else {
|
|
.failure(.sdkError(ClientProxyMockError.generic))
|
|
}
|
|
}
|
|
|
|
leaveSpaceSpaceIDClosure = { spaceID in
|
|
.success(LeaveSpaceHandleProxy(spaceID: spaceID,
|
|
leaveHandle: LeaveSpaceHandleSDKMock(.init(rooms: configuration.leaveSpaceRooms))))
|
|
}
|
|
spaceForIdentifierSpaceIDClosure = { spaceID in
|
|
let space = configuration.topLevelSpaces.first { $0.id == spaceID } ?? configuration.spaceRooms.first { $0.id == spaceID }
|
|
return .success(space)
|
|
}
|
|
addChildToReturnValue = .success(())
|
|
removeChildFromReturnValue = .success(())
|
|
}
|
|
}
|
|
|
|
extension SpaceServiceProxyMock.Configuration {
|
|
static var populated: SpaceServiceProxyMock.Configuration {
|
|
let spaceFilters = [SpaceServiceRoom].mockJoinedSpaces.reduce(into: [SpaceServiceFilter]()) { partialResult, spaceRoom in
|
|
partialResult.append(SpaceServiceFilter(room: spaceRoom, level: 0, descendants: .init()))
|
|
partialResult.append(SpaceServiceFilter(room: spaceRoom, level: 1, descendants: .init()))
|
|
}
|
|
|
|
let spaceRoomLists = [SpaceServiceRoom].mockJoinedSpaces.map {
|
|
($0.id, SpaceRoomListProxyMock(.init(spaceServiceRoom: $0, initialSpaceRooms: .mockSpaceList)))
|
|
}
|
|
|
|
let subSpaceRoomLists = [SpaceServiceRoom].mockSpaceList.map {
|
|
($0.id, SpaceRoomListProxyMock(.init(spaceServiceRoom: $0, initialSpaceRooms: .mockSingleRoom)))
|
|
}
|
|
|
|
return .init(topLevelSpaces: .mockJoinedSpaces,
|
|
spaceFilters: spaceFilters,
|
|
spaceRoomLists: .init(uniqueKeysWithValues: spaceRoomLists + subSpaceRoomLists),
|
|
spaceRooms: .mockSpaceList)
|
|
}
|
|
}
|