Implement artwork download and cache

This commit is contained in:
diyaa
2026-05-30 09:43:14 +02:00
parent 8caf29f186
commit 7b1952794c
23 changed files with 1261 additions and 66 deletions
@@ -1,5 +1,6 @@
import Foundation
import XCTest
import VelodyDomain
@testable import VelodyNetworking
final class RemoteLibraryDTOTests: XCTestCase {
@@ -12,7 +13,14 @@ final class RemoteLibraryDTOTests: XCTestCase {
sha256: String(repeating: "a", count: 64),
assetId: "asset-456",
createdAt: "2026-05-29T08:00:00.000Z",
updatedAt: "2026-05-29T08:05:00.000Z"
updatedAt: "2026-05-29T08:05:00.000Z",
artwork: RemoteArtworkDTO(
artworkId: "artwork-789",
sha256: String(repeating: "b", count: 64),
mimeType: "image/png",
width: 512,
height: 512
)
)
let track = dto.remoteTrack
@@ -23,6 +31,16 @@ final class RemoteLibraryDTOTests: XCTestCase {
XCTAssertEqual(track.durationSeconds, 245)
XCTAssertEqual(track.sha256, String(repeating: "a", count: 64))
XCTAssertEqual(track.assetId, "asset-456")
XCTAssertEqual(
track.artwork,
RemoteArtwork(
artworkId: "artwork-789",
sha256: String(repeating: "b", count: 64),
mimeType: "image/png",
width: 512,
height: 512
)
)
}
func testRemoteLibraryResponseDTODecodesFromAPIResponse() throws {
@@ -38,7 +56,14 @@ final class RemoteLibraryDTOTests: XCTestCase {
"sha256": "\(String(repeating: "a", count: 64))",
"assetId": "asset-456",
"createdAt": "2026-05-29T08:00:00.000Z",
"updatedAt": "2026-05-29T08:05:00.000Z"
"updatedAt": "2026-05-29T08:05:00.000Z",
"artwork": {
"artworkId": "artwork-789",
"sha256": "\(String(repeating: "b", count: 64))",
"mimeType": "image/png",
"width": 512,
"height": 512
}
}
]
}
@@ -50,5 +75,6 @@ final class RemoteLibraryDTOTests: XCTestCase {
XCTAssertEqual(decoded.tracks.count, 1)
XCTAssertEqual(decoded.tracks.first?.trackId, "track-123")
XCTAssertEqual(decoded.tracks.first?.durationSeconds, 245)
XCTAssertEqual(decoded.tracks.first?.artwork?.artworkId, "artwork-789")
}
}