from __future__ import annotations import unittest from unittest.mock import MagicMock from zyrarbot.storage.adapters.postgres.queue import PostgresQueue class QueueRepositoryTest(unittest.TestCase): def setUp(self): self.database = MagicMock() self.connection = self.database.connect.return_value.__enter__.return_value self.repository = PostgresQueue(self.database) def test_load_returns_guild_snapshot(self): snapshot = [{"id": "track-1", "title": "Track", "plays_left": 2}] self.connection.execute.return_value.fetchone.return_value = (snapshot,) self.assertEqual(self.repository.load(10), snapshot) def test_save_empty_snapshot_does_not_overwrite_saved_queue(self): self.repository.save(10, []) self.database.connect.assert_not_called() def test_save_upserts_snapshot_for_guild(self): tracks = [{"id": "track-1", "title": "Track", "plays_left": 2}] self.repository.save(10, tracks) statements = [call.args[0] for call in self.connection.execute.call_args_list] self.assertTrue(any("INSERT INTO queue_snapshots" in statement for statement in statements)) if __name__ == "__main__": unittest.main()