37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
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()
|