mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 19:44:05 +00:00
Add unit test for the in-timeline space permalink handling
This commit is contained in:
committed by
Stefan Ceriu
parent
0e52dd81ed
commit
92227060ad
@@ -14,7 +14,7 @@ struct ClientProxyMockConfiguration {
|
|||||||
var userID: String = RoomMemberProxyMock.mockMe.userID
|
var userID: String = RoomMemberProxyMock.mockMe.userID
|
||||||
var deviceID: String?
|
var deviceID: String?
|
||||||
var roomSummaryProvider: RoomSummaryProviderProtocol = RoomSummaryProviderMock(.init())
|
var roomSummaryProvider: RoomSummaryProviderProtocol = RoomSummaryProviderMock(.init())
|
||||||
var joinedSpaceRooms: [SpaceRoomProxyProtocol] = []
|
var spaceServiceConfiguration: SpaceServiceProxyMock.Configuration = .init()
|
||||||
var roomPreviews: [RoomPreviewProxyProtocol]?
|
var roomPreviews: [RoomPreviewProxyProtocol]?
|
||||||
var roomDirectorySearchProxy: RoomDirectorySearchProxyProtocol?
|
var roomDirectorySearchProxy: RoomDirectorySearchProxyProtocol?
|
||||||
|
|
||||||
@@ -92,15 +92,15 @@ extension ClientProxyMock {
|
|||||||
secureBackupController = SecureBackupControllerMock(.init(recoveryState: configuration.recoveryState))
|
secureBackupController = SecureBackupControllerMock(.init(recoveryState: configuration.recoveryState))
|
||||||
resetIdentityReturnValue = .success(IdentityResetHandleSDKMock(.init()))
|
resetIdentityReturnValue = .success(IdentityResetHandleSDKMock(.init()))
|
||||||
|
|
||||||
spaceService = SpaceServiceProxyMock(.init())
|
spaceService = SpaceServiceProxyMock(configuration.spaceServiceConfiguration)
|
||||||
|
|
||||||
roomForIdentifierClosure = { [weak self] identifier in
|
roomForIdentifierClosure = { [weak self] identifier in
|
||||||
if let room = self?.roomSummaryProvider.roomListPublisher.value.first(where: { $0.id == identifier }) {
|
if let room = self?.roomSummaryProvider.roomListPublisher.value.first(where: { $0.id == identifier }) {
|
||||||
let roomProxy = await JoinedRoomProxyMock(.init(id: room.id, name: room.name))
|
let roomProxy = await JoinedRoomProxyMock(.init(id: room.id, name: room.name))
|
||||||
roomProxy.loadOrFetchEventDetailsForReturnValue = .success(TimelineEventSDKMock())
|
roomProxy.loadOrFetchEventDetailsForReturnValue = .success(TimelineEventSDKMock())
|
||||||
return .joined(roomProxy)
|
return .joined(roomProxy)
|
||||||
} else if let spaceRoomProxy = configuration.joinedSpaceRooms.first(where: { $0.id == identifier }) {
|
} else if let spaceRoomProxy = configuration.spaceServiceConfiguration.joinedSpaces.first(where: { $0.id == identifier }) {
|
||||||
let roomProxy = await JoinedRoomProxyMock(.init(id: spaceRoomProxy.id, name: spaceRoomProxy.name))
|
let roomProxy = await JoinedRoomProxyMock(.init(id: spaceRoomProxy.id, name: spaceRoomProxy.name, isSpace: spaceRoomProxy.isSpace))
|
||||||
roomProxy.loadOrFetchEventDetailsForReturnValue = .success(TimelineEventSDKMock())
|
roomProxy.loadOrFetchEventDetailsForReturnValue = .success(TimelineEventSDKMock())
|
||||||
return .joined(roomProxy)
|
return .joined(roomProxy)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -589,7 +589,7 @@ class MockScreen: Identifiable {
|
|||||||
let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com",
|
let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com",
|
||||||
deviceID: "MOCKCLIENT",
|
deviceID: "MOCKCLIENT",
|
||||||
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
|
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
|
||||||
joinedSpaceRooms: .mockSingleRoom,
|
spaceServiceConfiguration: .init(joinedSpaces: .mockSingleRoom),
|
||||||
roomPreviews: [SpaceRoomProxyProtocol].mockSpaceList.map(RoomPreviewProxyMock.init)))
|
roomPreviews: [SpaceRoomProxyProtocol].mockSpaceList.map(RoomPreviewProxyMock.init)))
|
||||||
|
|
||||||
// The tab bar remains hidden for the non-spaces tests as we don't supply any mock spaces.
|
// The tab bar remains hidden for the non-spaces tests as we don't supply any mock spaces.
|
||||||
|
|||||||
@@ -378,6 +378,19 @@ class RoomFlowCoordinatorTests: XCTestCase {
|
|||||||
try await fulfillment.fulfill()
|
try await fulfillment.fulfill()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - Spaces
|
||||||
|
|
||||||
|
func testSpacePermalink() async throws {
|
||||||
|
setupRoomFlowCoordinator()
|
||||||
|
|
||||||
|
try await process(route: .room(roomID: "1", via: []))
|
||||||
|
XCTAssert(navigationStackCoordinator.rootCoordinator is RoomScreenCoordinator)
|
||||||
|
|
||||||
|
try await process(route: .childRoom(roomID: "space1", via: []))
|
||||||
|
XCTAssert(navigationStackCoordinator.rootCoordinator is RoomScreenCoordinator)
|
||||||
|
XCTAssert(navigationStackCoordinator.stackCoordinators.first is SpaceScreenCoordinator)
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
|
||||||
private func process(route: AppRoute) async throws {
|
private func process(route: AppRoute) async throws {
|
||||||
@@ -420,7 +433,9 @@ class RoomFlowCoordinatorTests: XCTestCase {
|
|||||||
|
|
||||||
private func setupRoomFlowCoordinator(asChildFlow: Bool = false, roomType: RoomType? = nil) {
|
private func setupRoomFlowCoordinator(asChildFlow: Bool = false, roomType: RoomType? = nil) {
|
||||||
cancellables.removeAll()
|
cancellables.removeAll()
|
||||||
clientProxy = ClientProxyMock(.init(userID: "hi@bob", roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))))
|
clientProxy = ClientProxyMock(.init(userID: "hi@bob",
|
||||||
|
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
|
||||||
|
spaceServiceConfiguration: .populated))
|
||||||
timelineControllerFactory = TimelineControllerFactoryMock(.init())
|
timelineControllerFactory = TimelineControllerFactoryMock(.init())
|
||||||
|
|
||||||
clientProxy.roomPreviewForIdentifierViaClosure = { [roomType] roomID, _ in
|
clientProxy.roomPreviewForIdentifierViaClosure = { [roomType] roomID, _ in
|
||||||
|
|||||||
Reference in New Issue
Block a user