Files
element-x-ios/UnitTests/Sources/SearchScreenViewModelTests.swift
T
Stefan Ceriu c5653c2208 Allow returning from global search with the escape key
cmd+k jumps to the search tab but left users with no way back. Pressing
escape in the search field now returns to the tab they came from (never
into search itself).

Escape is handled at the search field's pressesBegan, alongside the
existing arrow-key navigation, since the focused UIKit field swallows
SwiftUI keyboard shortcuts.
2026-06-22 16:54:30 +03:00

62 lines
1.6 KiB
Swift

//
// Copyright 2026 Element Creations Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
//
@testable import ElementX
import Testing
@MainActor
struct SearchScreenViewModelTests {
let viewModel: SearchScreenViewModelProtocol
var context: SearchScreenViewModelType.Context {
viewModel.context
}
init() {
viewModel = SearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
mediaProvider: MediaProviderMock(.init()))
}
@Test
func searching() async throws {
let deferred = deferFulfillment(context.observe(\.viewState.rooms)) { $0.count == 1 }
context.searchQuery = "Second"
try await deferred.fulfill()
}
@Test
func roomSelection() async throws {
let deferred = deferFulfillment(viewModel.actionsPublisher) { action in
switch action {
case .presentRoom(let roomID):
roomID == "2"
case .cancel:
false
}
}
context.send(viewAction: .selectRoom(roomID: "2"))
try await deferred.fulfill()
}
@Test
func cancel() async throws {
let deferred = deferFulfillment(viewModel.actionsPublisher) { action in
switch action {
case .cancel:
true
default:
false
}
}
context.send(viewAction: .cancel)
try await deferred.fulfill()
}
}