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) } }