Implement remote library metadata sync for iPhone
This commit is contained in:
+54
@@ -0,0 +1,54 @@
|
||||
import Foundation
|
||||
import XCTest
|
||||
@testable import VelodyNetworking
|
||||
|
||||
final class RemoteLibraryDTOTests: XCTestCase {
|
||||
func testRemoteTrackDTOMapsToRemoteTrack() {
|
||||
let dto = RemoteTrackDTO(
|
||||
trackId: "track-123",
|
||||
title: "Remote Title",
|
||||
artist: "Remote Artist",
|
||||
durationSeconds: 245,
|
||||
sha256: String(repeating: "a", count: 64),
|
||||
assetId: "asset-456",
|
||||
createdAt: "2026-05-29T08:00:00.000Z",
|
||||
updatedAt: "2026-05-29T08:05:00.000Z"
|
||||
)
|
||||
|
||||
let track = dto.remoteTrack
|
||||
|
||||
XCTAssertEqual(track.trackId, "track-123")
|
||||
XCTAssertEqual(track.title, "Remote Title")
|
||||
XCTAssertEqual(track.artist, "Remote Artist")
|
||||
XCTAssertEqual(track.durationSeconds, 245)
|
||||
XCTAssertEqual(track.sha256, String(repeating: "a", count: 64))
|
||||
XCTAssertEqual(track.assetId, "asset-456")
|
||||
}
|
||||
|
||||
func testRemoteLibraryResponseDTODecodesFromAPIResponse() throws {
|
||||
let data = Data(
|
||||
"""
|
||||
{
|
||||
"tracks": [
|
||||
{
|
||||
"trackId": "track-123",
|
||||
"title": "Remote Title",
|
||||
"artist": "Remote Artist",
|
||||
"durationSeconds": 245,
|
||||
"sha256": "\(String(repeating: "a", count: 64))",
|
||||
"assetId": "asset-456",
|
||||
"createdAt": "2026-05-29T08:00:00.000Z",
|
||||
"updatedAt": "2026-05-29T08:05:00.000Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
""".utf8
|
||||
)
|
||||
|
||||
let decoded = try JSONDecoder().decode(RemoteLibraryResponseDTO.self, from: data)
|
||||
|
||||
XCTAssertEqual(decoded.tracks.count, 1)
|
||||
XCTAssertEqual(decoded.tracks.first?.trackId, "track-123")
|
||||
XCTAssertEqual(decoded.tracks.first?.durationSeconds, 245)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user