| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import Foundation
- import Testing
- @testable import Trio
- @Suite("Settings Search Navigation") struct SettingsSearchTests {
- @Test("Searching 'Dynamic ISF' finds the Dynamic Settings screen") func searchDynamicISF() {
- let results = SettingItems.filteredItems(searchText: "Dynamic ISF")
- #expect(!results.isEmpty)
- let match = results.first { $0.matchedContent == "Dynamic ISF" }
- #expect(match != nil)
- #expect(match?.settingItem.view == .dynamicISF)
- #expect(match?.scrollLabel == "Dynamic ISF")
- }
- @Test("All scrollTargetLabels have valid non-empty targets") func scrollTargetLabelsNonEmpty() {
- for item in SettingItems.allItems {
- guard let labels = item.scrollTargetLabels else { continue }
- for (key, value) in labels {
- #expect(!value.isEmpty)
- #expect(item.searchContents?.contains(key) == true)
- }
- }
- }
- @Test("Every searchContents entry produces at least one result") func allSearchContentsAreSearchable() {
- for item in SettingItems.allItems {
- guard let contents = item.searchContents else { continue }
- for content in contents {
- let results = SettingItems.filteredItems(searchText: content)
- #expect(!results.isEmpty)
- }
- }
- }
- @Test("SearchResultTarget is Hashable and equatable by value") func searchResultTargetHashable() {
- let a = SearchResultTarget(screen: .dynamicISF, scrollLabel: "Dynamic ISF")
- let b = SearchResultTarget(screen: .dynamicISF, scrollLabel: "Dynamic ISF")
- let c = SearchResultTarget(screen: .dynamicISF, scrollLabel: "Adjust Basal")
- #expect(a == b)
- #expect(a != c)
- #expect(a.hashValue == b.hashValue)
- }
- @Test("SettingsSearchHighlight starts nil and accepts assignments")
- @MainActor func highlightStateTransitions() {
- let highlight = SettingsSearchHighlight()
- #expect(highlight.highlightedSetting == nil)
- highlight.highlightedSetting = "Dynamic ISF"
- #expect(highlight.highlightedSetting == "Dynamic ISF")
- highlight.highlightedSetting = nil
- #expect(highlight.highlightedSetting == nil)
- }
- @Test("SettingsSearchHighlight can be set and cleared in sequence")
- @MainActor func highlightSequentialUpdates() async {
- let highlight = SettingsSearchHighlight()
- highlight.highlightedSetting = "First Setting"
- #expect(highlight.highlightedSetting == "First Setting")
- highlight.highlightedSetting = "Second Setting"
- #expect(highlight.highlightedSetting == "Second Setting")
- highlight.highlightedSetting = nil
- #expect(highlight.highlightedSetting == nil)
- }
- }
|