171023a411
- 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
39 lines
1.2 KiB
Swift
39 lines
1.2 KiB
Swift
import XCTest
|
|
@testable import PortfolioJournal
|
|
|
|
final class MonthlyCheckInViewTests: XCTestCase {
|
|
func testMonthLabelUsesMonthAndYear() {
|
|
var components = DateComponents()
|
|
components.year = 2026
|
|
components.month = 2
|
|
// Past the 20-day grace period (MonthlyCheckInStore.graceDays), so the
|
|
// effective month is February itself.
|
|
components.day = 25
|
|
let date = Calendar(identifier: .gregorian).date(from: components)!
|
|
|
|
let label = MonthlyCheckInView.monthLabel(
|
|
for: date,
|
|
relativeTo: date,
|
|
locale: Locale(identifier: "en_US_POSIX")
|
|
)
|
|
|
|
XCTAssertEqual(label, "February 2026")
|
|
}
|
|
|
|
func testMonthLabelUsesPreviousMonthDuringGracePeriod() {
|
|
var components = DateComponents()
|
|
components.year = 2026
|
|
components.month = 2
|
|
components.day = 20
|
|
let date = Calendar(identifier: .gregorian).date(from: components)!
|
|
|
|
let label = MonthlyCheckInView.monthLabel(
|
|
for: date,
|
|
relativeTo: date,
|
|
locale: Locale(identifier: "en_US_POSIX")
|
|
)
|
|
|
|
XCTAssertEqual(label, "January 2026")
|
|
}
|
|
}
|