velody/packages/apple/VelodyPersistence/Tests/VelodyPersistenceTests/LocalTrackArtworkUploadPayloadBuilderTests.swift
2026-05-31 01:20:56 +02:00

51 lines
1.6 KiB
Swift

import Foundation
import XCTest
import VelodyDomain
@testable import VelodyPersistence
final class LocalTrackArtworkUploadPayloadBuilderTests: XCTestCase {
func testBuilderIncludesArtworkPayloadWhenArtworkExists() async throws {
let store = InMemoryLocalArtworkStore()
let data = sampleArtworkData()
let localFilePath = try await store.saveArtwork(
data,
sha256: "artwork-sha",
mimeType: "image/png"
)
let builder = LocalTrackArtworkUploadPayloadBuilder(artworkStore: store)
let payload = try await builder.makePayload(
for: LocalTrackArtwork(
localFilePath: localFilePath,
sha256: "artwork-sha",
mimeType: "image/png",
width: 1,
height: 1
)
)
XCTAssertEqual(payload?.dataBase64, data.base64EncodedString())
XCTAssertEqual(payload?.sha256, "artwork-sha")
XCTAssertEqual(payload?.mimeType, "image/png")
XCTAssertEqual(payload?.width, 1)
XCTAssertEqual(payload?.height, 1)
}
func testBuilderReturnsNilWhenArtworkIsMissing() async throws {
let builder = LocalTrackArtworkUploadPayloadBuilder(
artworkStore: InMemoryLocalArtworkStore()
)
let payload = try await builder.makePayload(for: nil)
XCTAssertNil(payload)
}
}
private func sampleArtworkData() -> Data {
Data(
base64Encoded:
"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2P8z8DwHwAFgwJ/lBi4NwAAAABJRU5ErkJggg=="
)!
}