51 lines
1.6 KiB
Swift
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=="
|
|
)!
|
|
}
|