quick update
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 4m49s
CI/CD Pipeline / Security Scanning (push) Successful in 15s
CI/CD Pipeline / Tests (3.11) (push) Failing after 4m58s
CI/CD Pipeline / Tests (3.12) (push) Failing after 5m0s
CI/CD Pipeline / Build Docker Image (push) Has been skipped
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 4m49s
CI/CD Pipeline / Security Scanning (push) Successful in 15s
CI/CD Pipeline / Tests (3.11) (push) Failing after 4m58s
CI/CD Pipeline / Tests (3.12) (push) Failing after 5m0s
CI/CD Pipeline / Build Docker Image (push) Has been skipped
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
"""Tests for database integration and models."""
|
||||
|
||||
from datetime import datetime, timezone
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
from sqlalchemy import select
|
||||
@@ -8,6 +9,7 @@ from sqlalchemy import select
|
||||
from guardden.models.guild import BannedWord, Guild, GuildSettings
|
||||
from guardden.models.moderation import ModerationLog, Strike, UserNote
|
||||
from guardden.services.database import Database
|
||||
from guardden.services.guild_config import GuildConfigService
|
||||
|
||||
|
||||
class TestDatabaseModels:
|
||||
@@ -312,3 +314,106 @@ class TestDatabaseSecurity:
|
||||
db_session.add(banned_word)
|
||||
await db_session.commit()
|
||||
await db_session.rollback()
|
||||
|
||||
|
||||
class TestGuildConfigServiceWithDefaults:
|
||||
"""Test GuildConfigService.create_guild() with settings defaults."""
|
||||
|
||||
async def test_create_guild_uses_settings_defaults(
|
||||
self, test_database, settings_with_custom_defaults, sample_guild_id, sample_owner_id
|
||||
):
|
||||
"""Test create_guild applies settings.guild_default values."""
|
||||
service = GuildConfigService(test_database, settings=settings_with_custom_defaults)
|
||||
|
||||
# Create mock Discord guild
|
||||
mock_guild = MagicMock()
|
||||
mock_guild.id = sample_guild_id
|
||||
mock_guild.name = "Test Guild"
|
||||
mock_guild.owner_id = sample_owner_id
|
||||
|
||||
# Create guild
|
||||
db_guild = await service.create_guild(mock_guild)
|
||||
|
||||
# Verify guild was created
|
||||
assert db_guild.id == sample_guild_id
|
||||
assert db_guild.name == "Test Guild"
|
||||
|
||||
# Get settings and verify defaults were applied
|
||||
guild_settings = await service.get_config(sample_guild_id)
|
||||
assert guild_settings is not None
|
||||
assert guild_settings.prefix == "?" # Custom default
|
||||
assert guild_settings.ai_sensitivity == 50 # Custom default
|
||||
assert guild_settings.automod_enabled is False # Custom default
|
||||
assert guild_settings.verification_enabled is True # Custom default
|
||||
assert guild_settings.verification_type == "captcha" # Custom default
|
||||
|
||||
async def test_create_guild_without_settings(
|
||||
self, test_database, sample_guild_id, sample_owner_id
|
||||
):
|
||||
"""Test create_guild works when settings is None."""
|
||||
service = GuildConfigService(test_database, settings=None)
|
||||
|
||||
# Create mock Discord guild
|
||||
mock_guild = MagicMock()
|
||||
mock_guild.id = sample_guild_id
|
||||
mock_guild.name = "Test Guild"
|
||||
mock_guild.owner_id = sample_owner_id
|
||||
|
||||
# Create guild
|
||||
db_guild = await service.create_guild(mock_guild)
|
||||
|
||||
# Verify guild was created
|
||||
assert db_guild.id == sample_guild_id
|
||||
|
||||
# Get settings and verify hardcoded defaults were used
|
||||
guild_settings = await service.get_config(sample_guild_id)
|
||||
assert guild_settings is not None
|
||||
assert guild_settings.prefix == "!" # Hardcoded default
|
||||
assert guild_settings.ai_sensitivity == 80 # Hardcoded default
|
||||
assert guild_settings.automod_enabled is True # Hardcoded default
|
||||
|
||||
async def test_create_guild_existing_guild_unchanged(
|
||||
self, test_database, settings_with_custom_defaults, sample_guild_id, sample_owner_id
|
||||
):
|
||||
"""Test create_guild returns existing guild without changes."""
|
||||
service = GuildConfigService(test_database, settings=settings_with_custom_defaults)
|
||||
|
||||
# Create mock Discord guild
|
||||
mock_guild = MagicMock()
|
||||
mock_guild.id = sample_guild_id
|
||||
mock_guild.name = "Test Guild"
|
||||
mock_guild.owner_id = sample_owner_id
|
||||
|
||||
# Create guild first time
|
||||
first_guild = await service.create_guild(mock_guild)
|
||||
assert first_guild.id == sample_guild_id
|
||||
|
||||
# Try to create again with different name
|
||||
mock_guild.name = "Different Name"
|
||||
second_guild = await service.create_guild(mock_guild)
|
||||
|
||||
# Should return existing guild
|
||||
assert second_guild.id == first_guild.id
|
||||
assert second_guild.name == "Test Guild" # Original name
|
||||
|
||||
async def test_create_guild_with_standard_settings(
|
||||
self, test_database, test_settings, sample_guild_id, sample_owner_id
|
||||
):
|
||||
"""Test create_guild with standard test_settings fixture."""
|
||||
service = GuildConfigService(test_database, settings=test_settings)
|
||||
|
||||
# Create mock Discord guild
|
||||
mock_guild = MagicMock()
|
||||
mock_guild.id = sample_guild_id
|
||||
mock_guild.name = "Test Guild"
|
||||
mock_guild.owner_id = sample_owner_id
|
||||
|
||||
# Create guild
|
||||
await service.create_guild(mock_guild)
|
||||
|
||||
# Get settings and verify standard defaults
|
||||
guild_settings = await service.get_config(sample_guild_id)
|
||||
assert guild_settings is not None
|
||||
# Standard settings use default GuildDefaults
|
||||
assert guild_settings.prefix == "!"
|
||||
assert guild_settings.ai_sensitivity == 80
|
||||
|
||||
Reference in New Issue
Block a user