velody/packages/apple/VelodyPersistence/Tests/VelodyPersistenceTests/RemoteLibraryStoreTests.swift

41 lines
1.3 KiB
Swift

import Foundation
import XCTest
import VelodyDomain
@testable import VelodyPersistence
final class RemoteLibraryStoreTests: XCTestCase {
func testFileRemoteLibraryStorePersistsTracksAcrossInstances() async throws {
let fileManager = FileManager.default
let tempDirectory = fileManager.temporaryDirectory.appendingPathComponent(
UUID().uuidString,
isDirectory: true
)
let fileURL = tempDirectory.appendingPathComponent("remote-library.json")
defer {
try? fileManager.removeItem(at: tempDirectory)
}
let firstStore = try FileRemoteLibraryStore(fileURL: fileURL)
let tracks = [
RemoteTrack(
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"
),
]
try await firstStore.replaceRemoteTracks(tracks)
let secondStore = try FileRemoteLibraryStore(fileURL: fileURL)
let restoredTracks = try await secondStore.loadRemoteTracks()
XCTAssertEqual(restoredTracks, tracks)
}
}