From 29166fa1e8d01af4b0eb474982464acf6b5805d4 Mon Sep 17 00:00:00 2001 From: Taksh Date: Fri, 31 Jul 2026 11:42:22 +0300 Subject: [PATCH] test: cover alternate app icon catalog names and persistence Keep applySystem off in unit tests so UIApplication is never required. --- .../AlternateAppIconSettingsTests.swift | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 bitchatTests/Services/AlternateAppIconSettingsTests.swift diff --git a/bitchatTests/Services/AlternateAppIconSettingsTests.swift b/bitchatTests/Services/AlternateAppIconSettingsTests.swift new file mode 100644 index 00000000..66405f19 --- /dev/null +++ b/bitchatTests/Services/AlternateAppIconSettingsTests.swift @@ -0,0 +1,45 @@ +import Foundation +import Testing +@testable import bitchat + +struct AlternateAppIconSettingsTests { + private func makeDefaults() -> UserDefaults { + let suite = "bitchat.tests.alticon.\(UUID().uuidString)" + return UserDefaults(suiteName: suite)! + } + + @Test func primarySystemNameIsNil() { + #expect(AlternateAppIconSettings.Icon.primary.systemName == nil) + } + + @Test func alternateSystemNamesMatchCatalog() { + #expect(AlternateAppIconSettings.Icon.neutral.systemName == "AppIconNeutral") + #expect(AlternateAppIconSettings.Icon.notes.systemName == "AppIconNotes") + #expect(AlternateAppIconSettings.Icon.quiet.systemName == "AppIconQuiet") + } + + @Test func allCasesCoverDisguiseSet() { + let ids = Set(AlternateAppIconSettings.Icon.allCases.map(\.id)) + #expect(ids == ["primary", "AppIconNeutral", "AppIconNotes", "AppIconQuiet"]) + } + + @Test func selectedPersistsRawValueWithoutTouchingSystem() { + let defaults = makeDefaults() + #expect(AlternateAppIconSettings.selected(in: defaults) == .primary) + + AlternateAppIconSettings.setSelected(.notes, in: defaults, applySystem: false) + #expect(defaults.string(forKey: AlternateAppIconSettings.storageKey) == "AppIconNotes") + #expect(AlternateAppIconSettings.selected(in: defaults) == .notes) + + AlternateAppIconSettings.setSelected(.primary, in: defaults, applySystem: false) + #expect(defaults.string(forKey: AlternateAppIconSettings.storageKey) == nil) + #expect(AlternateAppIconSettings.selected(in: defaults) == .primary) + } + + @Test func resetClearsStoredPreference() { + let defaults = makeDefaults() + AlternateAppIconSettings.setSelected(.quiet, in: defaults, applySystem: false) + defaults.removeObject(forKey: AlternateAppIconSettings.storageKey) + #expect(AlternateAppIconSettings.selected(in: defaults) == .primary) + } +}