import Foundation import Testing @testable import FlaroDesign /// Ein Bild von der Platte muss ankommen. /// /// **Der Fehler, für den diese Prüfung steht.** Der Lader verlangte von jeder /// Antwort eine `HTTPURLResponse` — eine `file:`-Adresse antwortet aber mit /// einer schlichten `URLResponse`, und die Prüfung gab darauf `nil` zurück. /// Sichtbar wurde das erst, als die Downloads ihre Plakate mitbrachten: die /// Dateien lagen da, und die Kacheln blieben trotzdem grau. @Suite("Bilder von der Platte") struct ArtworkLoaderTests { /// Ein gültiges PNG, ein Bildpunkt gross. private static let winzigesPNG = Data(base64Encoded: """ iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmM\ IQAAAABJRU5ErkJggg== """)! private func ablegen(_ daten: Data, als name: String) throws -> URL { let ziel = FileManager.default.temporaryDirectory .appending(path: "artwork-\(UUID().uuidString)-\(name)") try daten.write(to: ziel) return ziel } @Test("Eine Datei wird gelesen, nicht abgefragt") func dateiWirdGelesen() async throws { let datei = try ablegen(Self.winzigesPNG, als: "plakat.bild") defer { try? FileManager.default.removeItem(at: datei) } let bild = await ArtworkLoader.shared.image(for: datei) #expect(bild != nil) } @Test("Eine Datei, die es nicht gibt, ergibt kein Bild") func fehlendeDatei() async { let nirgends = FileManager.default.temporaryDirectory .appending(path: "gibt-es-nicht-\(UUID().uuidString).bild") let bild = await ArtworkLoader.shared.image(for: nirgends) #expect(bild == nil) } @Test("Was keine Bilddaten sind, ergibt kein Bild") func keinBild() async throws { let datei = try ablegen(Data("kein Bild, nur Text".utf8), als: "text.bild") defer { try? FileManager.default.removeItem(at: datei) } let bild = await ArtworkLoader.shared.image(for: datei) #expect(bild == nil) } }