"""
Mock service implementations for testing.

Provides mock conversation and other service implementations.
"""
from typing import Dict, Any, Optional


class MockConversationService:
    """
    Mock implementation of IConversationService for testing.

    Returns canned responses instead of calling AI services.
    """

    def __init__(self):
        """Initialize mock conversation service."""
        self.conversation_history: list = []
        self.call_count = 0

    async def get_response(self, player, character, message: str) -> str:
        """
        Get a mock conversation response.

        Args:
            player: Player object
            character: Character being talked to
            message: User's message

        Returns:
            Mock response string
        """
        self.call_count += 1
        self.conversation_history.append({
            'character': character.firstname if hasattr(character, 'firstname') else 'Unknown',
            'message': message
        })

        # Return simple canned response
        return f"This is a mock response to: {message}"

    def clear(self):
        """Clear conversation history."""
        self.conversation_history.clear()
        self.call_count = 0

    def get_call_count(self) -> int:
        """Get number of times get_response was called."""
        return self.call_count


class MockImageService:
    """
    Mock implementation of image generation service for testing.
    """

    def __init__(self):
        """Initialize mock image service."""
        self.generation_count = 0

    async def generate_avatar(self, person) -> str:
        """
        Generate a mock avatar URL.

        Args:
            person: Person object

        Returns:
            Mock avatar URL
        """
        self.generation_count += 1
        return f"https://mock-avatar.com/{person.id}"

    def clear(self):
        """Clear generation count."""
        self.generation_count = 0
