Add unit test for the in-timeline space permalink handling
This commit is contained in:
committed by
Stefan Ceriu
parent
182b48b42b
commit
334746edb3
@@ -14,7 +14,7 @@ struct ClientProxyMockConfiguration {
|
||||
var userID: String = RoomMemberProxyMock.mockMe.userID
|
||||
var deviceID: String?
|
||||
var roomSummaryProvider: RoomSummaryProviderProtocol = RoomSummaryProviderMock(.init())
|
||||
var joinedSpaceRooms: [SpaceRoomProxyProtocol] = []
|
||||
var spaceServiceConfiguration: SpaceServiceProxyMock.Configuration = .init()
|
||||
var roomPreviews: [RoomPreviewProxyProtocol]?
|
||||
var roomDirectorySearchProxy: RoomDirectorySearchProxyProtocol?
|
||||
|
||||
@@ -92,15 +92,15 @@ extension ClientProxyMock {
|
||||
secureBackupController = SecureBackupControllerMock(.init(recoveryState: configuration.recoveryState))
|
||||
resetIdentityReturnValue = .success(IdentityResetHandleSDKMock(.init()))
|
||||
|
||||
spaceService = SpaceServiceProxyMock(.init())
|
||||
spaceService = SpaceServiceProxyMock(configuration.spaceServiceConfiguration)
|
||||
|
||||
roomForIdentifierClosure = { [weak self] identifier in
|
||||
if let room = self?.roomSummaryProvider.roomListPublisher.value.first(where: { $0.id == identifier }) {
|
||||
let roomProxy = await JoinedRoomProxyMock(.init(id: room.id, name: room.name))
|
||||
roomProxy.loadOrFetchEventDetailsForReturnValue = .success(TimelineEventSDKMock())
|
||||
return .joined(roomProxy)
|
||||
} else if let spaceRoomProxy = configuration.joinedSpaceRooms.first(where: { $0.id == identifier }) {
|
||||
let roomProxy = await JoinedRoomProxyMock(.init(id: spaceRoomProxy.id, name: spaceRoomProxy.name))
|
||||
} else if let spaceRoomProxy = configuration.spaceServiceConfiguration.joinedSpaces.first(where: { $0.id == identifier }) {
|
||||
let roomProxy = await JoinedRoomProxyMock(.init(id: spaceRoomProxy.id, name: spaceRoomProxy.name, isSpace: spaceRoomProxy.isSpace))
|
||||
roomProxy.loadOrFetchEventDetailsForReturnValue = .success(TimelineEventSDKMock())
|
||||
return .joined(roomProxy)
|
||||
} else {
|
||||
|
||||
@@ -589,7 +589,7 @@ class MockScreen: Identifiable {
|
||||
let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com",
|
||||
deviceID: "MOCKCLIENT",
|
||||
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
|
||||
joinedSpaceRooms: .mockSingleRoom,
|
||||
spaceServiceConfiguration: .init(joinedSpaces: .mockSingleRoom),
|
||||
roomPreviews: [SpaceRoomProxyProtocol].mockSpaceList.map(RoomPreviewProxyMock.init)))
|
||||
|
||||
// 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()
|
||||
}
|
||||
|
||||
// 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
|
||||
|
||||
private func process(route: AppRoute) async throws {
|
||||
@@ -420,7 +433,9 @@ class RoomFlowCoordinatorTests: XCTestCase {
|
||||
|
||||
private func setupRoomFlowCoordinator(asChildFlow: Bool = false, roomType: RoomType? = nil) {
|
||||
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())
|
||||
|
||||
clientProxy.roomPreviewForIdentifierViaClosure = { [roomType] roomID, _ in
|
||||
|
||||
Reference in New Issue
Block a user