fix: prevent overwriting saved queue with empty track lists in repository and music player

This commit is contained in:
mmacierzanka committed 2026-09-11 01:29:31 +02:00
1 parent 06238b0438
commit 9143c6029a
4 files changed
+56 -8

No files matched your search

+30
View File
@@ -296,6 +296,36 @@ class MusicPlayerQueueTest(unittest.IsolatedAsyncioTestCase):
with self.assertRaisesRegex(ValueError, "not connected"):
await player.restore_queue(GUILD)
def test_save_queue_does_not_overwrite_with_empty_queue(self):
with tempfile.TemporaryDirectory() as directory:
player, _ = build_player()
player._queues = QueueRepository(directory)
saved = [{"id": "saved", "title": "Saved", "plays_left": 2}]
player._queues.save(GUILD, saved)
# Kolejka w stanie odtwarzacza jest pusta
player.state(GUILD).queue = []
player.save_queue(GUILD)
# Zapisana wcześniej kolejka powinna pozostać nienaruszona
self.assertEqual(player._queues.load(GUILD), saved)
def test_save_queue_does_not_save_when_all_plays_consumed(self):
with tempfile.TemporaryDirectory() as directory:
player, _ = build_player()
player._queues = QueueRepository(directory)
saved = [{"id": "saved", "title": "Saved", "plays_left": 2}]
player._queues.save(GUILD, saved)
# Wszystkie utwory w kolejce mają plays_left = 0
track = FakeTrack("consumed")
track.plays_left = 0
player.state(GUILD).queue = [track]
player.save_queue(GUILD)
# Zapisana wcześniej kolejka powinna pozostać nienaruszona
self.assertEqual(player._queues.load(GUILD), saved)
class LoopModeTest(unittest.TestCase):
def test_cycle_order(self):