fix: tests and linters
This commit is contained in:
7 files changed
+122
-131
No files matched your search
@@ -1,40 +1,35 @@
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from __future__ import annotations
|
||||
|
||||
from zyrarbot.storage.queue_repository import QueueRepository
|
||||
import unittest
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from zyrarbot.storage.adapters.postgres.queue import PostgresQueue
|
||||
|
||||
|
||||
class QueueRepositoryTest(unittest.TestCase):
|
||||
def test_snapshots_are_isolated_per_guild(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
repository = QueueRepository(directory)
|
||||
first = [{"id": "first", "title": "First", "plays_left": 2}]
|
||||
second = [{"id": "second", "title": "Second", "plays_left": 4}]
|
||||
def setUp(self):
|
||||
self.database = MagicMock()
|
||||
self.connection = self.database.connect.return_value.__enter__.return_value
|
||||
self.repository = PostgresQueue(self.database)
|
||||
|
||||
repository.save(10, first)
|
||||
repository.save(20, second)
|
||||
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(repository.load(10), first)
|
||||
self.assertEqual(repository.load(20), second)
|
||||
self.assertTrue((Path(directory) / "10.json").exists())
|
||||
self.assertTrue((Path(directory) / "20.json").exists())
|
||||
self.assertEqual(self.repository.load(10), snapshot)
|
||||
|
||||
def test_save_empty_tracks_does_nothing(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
repository = QueueRepository(directory)
|
||||
tracks = [{"id": "first", "title": "First", "plays_left": 2}]
|
||||
def test_save_empty_snapshot_does_not_overwrite_saved_queue(self):
|
||||
self.repository.save(10, [])
|
||||
|
||||
repository.save(10, tracks)
|
||||
self.assertEqual(repository.load(10), tracks)
|
||||
self.database.connect.assert_not_called()
|
||||
|
||||
# Próba zapisania pustej listy nie powinna nadpisać poprzedniej
|
||||
repository.save(10, [])
|
||||
self.assertEqual(repository.load(10), tracks)
|
||||
def test_save_upserts_snapshot_for_guild(self):
|
||||
tracks = [{"id": "track-1", "title": "Track", "plays_left": 2}]
|
||||
|
||||
# Zapis pustej kolejki dla nowego serwera nie powinien tworzyć pliku
|
||||
repository.save(20, [])
|
||||
self.assertFalse(repository.exists(20))
|
||||
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__":
|
||||
|
||||
Reference in new issue
Block a user