Files
InvestmentTrackerApp/PortfolioJournalTests/ViewModels/SettingsViewModelTests.swift
T
alexandrev-tibco 171023a411 Tests: corrige 3 tests desfasados y añade recorrido UI del layout adaptativo
- ReviewPromptServiceTests: la regla vigente pide 2 check-ins, no 3.
- MonthlyCheckInViewTests: el día 1 cae en el periodo de gracia (20 días);
  usar el día 25 para etiquetar febrero.
- SettingsViewModelTests: isPremium llega por receive(on: main); dar una
  vuelta de run loop antes de actuar.
- DuoLayoutUITests: recorre tabs, split views e inspector con capturas
  (ejecutar en iPhone 17 Pro y iPad mini). ScreenshotMode oculta los tips de
  TipKit; identificador de accesibilidad en el botón de Quick Update.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F1u4K16xy7eQVtgsYNZ9Vn
2026-09-16 15:13:10 +02:00

47 lines
1.5 KiB
Swift

import XCTest
@testable import PortfolioJournal
@MainActor
final class SettingsViewModelTests: XCTestCase {
override func tearDown() {
UserDefaults.standard.removeObject(forKey: "backupsEnabled")
UserDefaults.standard.removeObject(forKey: "backupRetentionCount")
UserDefaults.standard.removeObject(forKey: "debugPremiumOverride")
super.tearDown()
}
func testSetBackupsEnabledNonPremiumShowsPaywall() {
let iap = IAPService()
#if DEBUG
iap.setPremiumForTesting(false)
#endif
let viewModel = SettingsViewModel(iapService: iap)
viewModel.setBackupsEnabled(true)
XCTAssertFalse(viewModel.backupsEnabled)
XCTAssertTrue(viewModel.showingPaywall)
}
func testSetBackupsEnabledPremiumPersistsFlag() {
#if DEBUG
UserDefaults.standard.set(true, forKey: "debugPremiumOverride")
#endif
let iap = IAPService()
#if DEBUG
iap.setDebugPremiumOverride(true)
#endif
let viewModel = SettingsViewModel(iapService: iap)
// isPremium is mirrored via `receive(on: DispatchQueue.main)`; give the
// publisher a run-loop turn before acting on it.
RunLoop.main.run(until: Date().addingTimeInterval(0.2))
XCTAssertTrue(viewModel.isPremium)
viewModel.setBackupsEnabled(true)
XCTAssertTrue(viewModel.backupsEnabled)
XCTAssertFalse(viewModel.showingPaywall)
XCTAssertTrue(UserDefaults.standard.bool(forKey: "backupsEnabled"))
}
}