mana-swift-ui/Tests/ManaOnboardingUITests/ManaOnboardingPageTests.swift
Till JS fe92bffc59 ManaPill und Onboarding-Zeile: auch eigene Bilder statt nur SF-Symbole
ManaPill(_:image:variant:size:action:) und Row(katalogSymbol:) für Apps
mit eigenem Zeichensatz (seepuls). Rein additiv: bestehende Aufrufe mit
systemImage/symbol laufen unverändert, kein Init wird mehrdeutig.

Sitzung: 79964fc4
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0111BCGu1WXLkJzY5CGKXdC6
2026-09-14 19:47:02 +02:00

68 lines
2.3 KiB
Swift

import XCTest
@testable import ManaOnboardingUI
final class ManaOnboardingPageTests: XCTestCase {
func testDefaultIdFallsBackToTitle() {
let page = ManaOnboardingPage(title: "Werte", rows: [])
XCTAssertEqual(page.id, "Werte")
}
func testExplicitIdWins() {
let page = ManaOnboardingPage(id: "p1", title: "Werte", rows: [])
XCTAssertEqual(page.id, "p1")
}
func testIntroAndFootnoteDefaultNil() {
let page = ManaOnboardingPage(title: "Werte", rows: [])
XCTAssertNil(page.intro)
XCTAssertNil(page.footnote)
}
func testRowsArePreserved() {
let page = ManaOnboardingPage(
title: "Features",
rows: [
.init(symbol: "calendar", title: "Frequenz", text: "egal wann"),
.init(symbol: "bell", title: "Erinnerung", text: "lokal"),
]
)
XCTAssertEqual(page.rows.count, 2)
XCTAssertEqual(page.rows.first?.symbol, "calendar")
XCTAssertEqual(page.rows.last?.title, "Erinnerung")
}
func testRowDefaultIdFallsBackToTitle() {
let row = ManaOnboardingPage.Row(symbol: "star", title: "Mein Titel", text: "x")
XCTAssertEqual(row.id, "Mein Titel")
}
func testFootnoteAndIntroStored() {
let page = ManaOnboardingPage(
title: "Features",
intro: "Vorspann",
rows: [.init(symbol: "star", title: "a", text: "b")],
footnote: "Konto optional"
)
XCTAssertEqual(page.intro, "Vorspann")
XCTAssertEqual(page.footnote, "Konto optional")
}
func testPageIsSendable() {
// Compile-time-Beleg: ohne Action-Closures ist die API voll Sendable.
func requireSendable<T: Sendable>(_: T.Type) {}
requireSendable(ManaOnboardingPage.self)
requireSendable(ManaOnboardingPage.Row.self)
}
func testRowQuelleIstSystemOhneAngabe() {
let row = ManaOnboardingPage.Row(symbol: "calendar", title: "Frequenz", text: "egal wann")
XCTAssertEqual(row.quelle, .system)
}
func testRowAusDemKatalog() {
let row = ManaOnboardingPage.Row(katalogSymbol: "zeichen.bodensee", title: "Region", text: "eine")
XCTAssertEqual(row.quelle, .katalog)
XCTAssertEqual(row.symbol, "zeichen.bodensee")
XCTAssertEqual(row.id, "Region")
}
}