Files
Termind/FrameworkTests/TerminalFindControllerTests.swift
T

106 lines
3.3 KiB
Swift

// SPDX-FileCopyrightText: 2026 Kaede Akino
// SPDX-License-Identifier: GPL-3.0-only
import TermindApplication
import TermindDomain
import Testing
@Suite("Terminal Find controller")
@MainActor
struct TerminalFindControllerTests {
@Test func retainedQueryRestartsWhenPresentedAndDismissReturnsFocus() {
var bindings: [String] = []
var focusCount = 0
let find = TerminalFindController(
perform: { bindings.append($0) },
focus: { focusCount += 1 }
)
find.updateQuery("deploy")
find.present()
find.navigate(.next)
find.dismiss()
find.present()
#expect(
bindings == [
TerminalFindBinding.search("deploy"),
TerminalFindBinding.search("deploy"),
TerminalFindBinding.navigate(.next),
TerminalFindBinding.end,
TerminalFindBinding.search("deploy"),
]
)
#expect(focusCount == 1)
#expect(find.query == "deploy")
#expect(find.isPresented)
}
@Test func navigationOpensTheBarButRequiresAQuery() {
var bindings: [String] = []
let find = TerminalFindController(perform: { bindings.append($0) }, focus: {})
find.presentAndNavigate(.previous)
#expect(find.isPresented)
#expect(bindings.isEmpty)
}
@Test func nativeDismissalEndsSearchWithoutRequestingTerminalFocus() {
var bindings: [String] = []
var focusCount = 0
let find = TerminalFindController(
perform: { bindings.append($0) }, focus: { focusCount += 1 })
find.present()
find.updateQuery("deploy")
bindings.removeAll()
find.dismiss(restoringFocus: false)
find.dismiss(restoringFocus: false)
#expect(!find.isPresented)
#expect(bindings == [TerminalFindBinding.end])
#expect(focusCount == 0)
find.present()
#expect(bindings == [TerminalFindBinding.end, TerminalFindBinding.search("deploy")])
find.dismiss()
#expect(focusCount == 1)
}
@Test func resizeSuspendsEngineSearchWhileRetainingPresentationAndLatestQuery() {
var bindings: [String] = []
let find = TerminalFindController(perform: { bindings.append($0) }, focus: {})
find.present()
find.updateQuery("deploy")
bindings.removeAll()
find.suspendSearchForResize()
find.suspendSearchForResize()
find.updateQuery("release")
#expect(find.isPresented)
#expect(find.query == "release")
#expect(bindings == [TerminalFindBinding.end])
find.resumeSearchAfterResize()
find.resumeSearchAfterResize()
#expect(bindings == [TerminalFindBinding.end, TerminalFindBinding.search("release")])
}
@Test func closingDuringResizeDoesNotRestartSearchWhenKeyboardSettles() {
var bindings: [String] = []
let find = TerminalFindController(perform: { bindings.append($0) }, focus: {})
find.present()
find.updateQuery("deploy")
find.suspendSearchForResize()
find.dismiss(restoringFocus: false)
bindings.removeAll()
find.resumeSearchAfterResize()
#expect(bindings.isEmpty)
#expect(!find.isPresented)
#expect(find.query == "deploy")
}
}