import Testing @testable import OnyxCore @Suite("Anmeldeobjekt") struct LoginItemTests { @Test("Die Zustände von SMAppService werden vollständig abgebildet") func mapsAllStatuses() { #expect(LoginItemState(statusRawValue: 0) == .notRegistered) #expect(LoginItemState(statusRawValue: 1) == .enabled) #expect(LoginItemState(statusRawValue: 2) == .requiresApproval) #expect(LoginItemState(statusRawValue: 3) == .notFound) } @Test("Ein unbekannter Zustand gilt nicht als eingeschaltet") func unknownIsNotEnabled() { // Lieber „aus" behaupten und den Nutzer erneut klicken lassen, als // „an" behaupten und Onyx startet nicht mit. #expect(!LoginItemState(statusRawValue: 99).isEnabled) } @Test("Genehmigung ausstehend ist nicht dasselbe wie ausgeschaltet") func approvalIsNotOff() { // Der eigentliche Punkt. Wer das Anmeldeobjekt in den // Systemeinstellungen abgeschaltet hat, bekommt `requiresApproval`. // Zeigt Onyx das als „aus", drückt man den Schalter — und nichts // passiert, weil erneutes Registrieren daran nichts ändert. Es hilft // nur der Gang in die Systemeinstellungen, und genau das muss dastehen. let state = LoginItemState.requiresApproval #expect(!state.isEnabled) #expect(state.needsSystemSettings) } @Test("Nur der ausgeschaltete Zustand lässt sich durch Registrieren beheben") func onlyNotRegisteredIsFixableInApp() { #expect(!LoginItemState.notRegistered.needsSystemSettings) #expect(!LoginItemState.enabled.needsSystemSettings) // Fehlt die Datei, hilft auch die Systemeinstellung nicht — dann stimmt // etwas mit der Installation nicht. #expect(!LoginItemState.notFound.needsSystemSettings) } }