import pytest from unittest.mock import AsyncMock, MagicMock from app.brand.services.brand_service import BrandKitService from app.brand.services.validation_service import BrandKitValidationService from app.brand.models.brand import BrandKitVersion @pytest.fixture def validation_service(): return BrandKitValidationService() def test_brand_kit_validation_missing_logo(validation_service): version = BrandKitVersion(version_number=1, created_by="user1") result = validation_service.validate(version) assert not result['valid'] assert any(issue['field'] == 'logo_asset_id' for issue in result['issues']) def test_brand_kit_validation_valid(validation_service): version = BrandKitVersion(version_number=1, created_by="user1", logo_asset_id="asset123") result = validation_service.validate(version) assert result['valid'] @pytest.mark.asyncio async def test_brand_kit_service_create(): mock_repo = AsyncMock() mock_assets = AsyncMock() mock_audit = AsyncMock() service = BrandKitService(mock_repo, mock_assets, mock_audit) workspace_id = "ws1" name = "Test Kit" data = {"logo_asset_id": "asset123"} user_id = "user1" mock_assets.get_asset.return_value = {"id": "asset123"} mock_repo.create.return_value = (MagicMock(id="kit1"), MagicMock(id="ver1")) await service.create_brand_kit(workspace_id, name, data, user_id=user_id) mock_assets.get_asset.assert_called_once() mock_repo.create.assert_called_once() mock_audit.log_event.assert_called_once()