from __future__ import annotations import unittest from unittest.mock import MagicMock from zyrarbot.storage.adapters.postgres.guild_config import PostgresGuildConfig class GuildConfigRepositoryTest(unittest.TestCase): def setUp(self): self.database = MagicMock() self.connection = self.database.connect.return_value.__enter__.return_value self.repository = PostgresGuildConfig(self.database, fallback_plays=5) def test_default_plays_uses_fallback_when_guild_has_no_override(self): self.connection.execute.return_value.fetchone.return_value = (None,) self.assertEqual(self.repository.get_default_plays(10), 5) def test_default_plays_returns_guild_override(self): self.connection.execute.return_value.fetchone.return_value = (7,) self.assertEqual(self.repository.get_default_plays(10), 7) def test_set_default_plays_creates_guild_then_updates_setting(self): self.repository.set_default_plays(10, 9) statements = [call.args[0] for call in self.connection.execute.call_args_list] self.assertIn("INSERT INTO guilds", statements[0]) self.assertIn("UPDATE guilds SET default_plays", statements[1]) if __name__ == "__main__": unittest.main()