import Foundation import ManaCore import Testing @testable import ManaAuthUI @Suite("EmailVerifyGateViewModel") @MainActor struct EmailVerifyGateViewModelTests { @Test("resend erfolgreich → .resent") func resendSuccess() async { let mocked = makeMockedAuth() let model = EmailVerifyGateViewModel(email: "u@x.de", auth: mocked.auth) mocked.setHandler { _ in (200, Data(#"{"success":true}"#.utf8)) } await model.resend() if case .resent = model.status { #expect(Bool(true)) } else { Issue.record("Expected .resent, got \(model.status)") } } @Test("Rate-Limit → .error mit Retry-Hint") func resendRateLimited() async { let mocked = makeMockedAuth() let model = EmailVerifyGateViewModel(email: "u@x.de", auth: mocked.auth) mocked.setHandler { _ in ( 429, Data(#"{"error":"RATE_LIMITED","retryAfterSec":42,"status":429}"#.utf8), ["Retry-After": "42"] ) } await model.resend() if case let .error(message) = model.status { #expect(message == "Zu viele Versuche. Bitte warte 42s.") } else { Issue.record("Expected .error, got \(model.status)") } } }