mana-swift-ui/Tests/ManaTransparencyUITests/ManaTransparencyUITests.swift
Till JS 75741ec111 ManaTransparencyUI: geteilter nativer „Danke & Transparenz"-Renderer (P1)
Neues Library-Product — Pendant zur Android-/Web-Fläche (siehe
mana/docs/TRANSPARENZ.md). Pure SwiftUI, app-agnostisch, keine Deps.
- ManaCredit (Codable/Sendable) + ManaTransparencyData.load() für die vom
  Generator erzeugte JSON.
- ManaTransparencyView(intro:entries:) gruppiert nach Sektion, Einträge mit
  Lizenz + tippbarem Link.
swift build + 2 Tests grün.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 20:37:28 +02:00

32 lines
1.2 KiB
Swift

import XCTest
@testable import ManaTransparencyUI
final class ManaTransparencyUITests: XCTestCase {
/// Die generierte JSON muss in ``ManaTransparencyData`` dekodieren.
func testDecodesGeneratedJson() throws {
let json = """
{
"version": "1",
"intro": "Hallo",
"entries": [
{ "category": "upstream", "name": "Neo Store", "license": "GPL-3.0", "url": "https://example.org" },
{ "category": "library", "name": "Coil", "license": "Apache-2.0" },
{ "category": "saas-exception", "name": "Stripe", "why": "Spenden" }
]
}
""".data(using: .utf8)!
let data = try JSONDecoder().decode(ManaTransparencyData.self, from: json)
XCTAssertEqual(data.intro, "Hallo")
XCTAssertEqual(data.entries.count, 3)
XCTAssertEqual(data.entries.first?.category, "upstream")
XCTAssertEqual(data.entries.first?.id, "upstream/Neo Store")
XCTAssertEqual(data.entries.last?.why, "Spenden")
}
/// Optionale Felder dürfen fehlen.
func testOptionalFields() throws {
let c = ManaCredit(category: "framework", name: "Kotlin")
XCTAssertNil(c.license)
XCTAssertEqual(c.id, "framework/Kotlin")
}
}