From 72f860e0e171f6aac4e7d896e7a571147dbcb5c5 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Sun, 12 Apr 2026 22:52:33 -0500 Subject: feat: add search and recent queries Implements: https://todo.sr.ht/~ccleberg/hutch/47 Implements: https://todo.sr.ht/~ccleberg/hutch/48 --- HutchTests/BuildListViewModelTests.swift | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'HutchTests/BuildListViewModelTests.swift') diff --git a/HutchTests/BuildListViewModelTests.swift b/HutchTests/BuildListViewModelTests.swift index a8cdc30..fccd7cf 100644 --- a/HutchTests/BuildListViewModelTests.swift +++ b/HutchTests/BuildListViewModelTests.swift @@ -28,6 +28,18 @@ struct BuildListViewModelTests { #expect(filtered.map(\.id) == [42]) } + @Test + func filteredJobsMatchesByStatus() { + let jobs = [ + makeJob(id: 1, status: .running, tags: []), + makeJob(id: 2, status: .success, tags: []) + ] + + let filtered = filterJobs(jobs, query: "running") + + #expect(filtered.map(\.id) == [1]) + } + @Test func buildFilterPrioritizesActionableStates() { let jobs = [ @@ -45,14 +57,7 @@ struct BuildListViewModelTests { } private func filterJobs(_ jobs: [JobSummary], query: String) -> [JobSummary] { - let q = query.trimmingCharacters(in: .whitespacesAndNewlines).lowercased() - guard !q.isEmpty else { return jobs } - return jobs.filter { - String($0.id).contains(q) || - $0.tags.contains { $0.lowercased().contains(q) } || - ($0.note?.lowercased().contains(q) == true) || - ($0.image?.lowercased().contains(q) == true) - } + BuildListViewModel.searchJobs(jobs, matching: query) } private func makeJob(id: Int, status: JobStatus = .success, tags: [String]) -> JobSummary { -- cgit v1.2.3