// 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") } }