import unittest

from core.utils.config import Settings


class ImageConfigTests(unittest.TestCase):
    def test_defaults_do_not_include_machine_specific_paths(self):
        settings = Settings()

        self.assertEqual(settings.IMAGE_GEN_PROVIDER, "api")
        self.assertEqual(settings.COMFYUI_PROMPT_UTILS_PATH, "")
        self.assertEqual(settings.COMFYUI_CLI_PATH, "")
        self.assertEqual(settings.COMFYUI_PYTHON_BIN, "")
        self.assertFalse(settings.is_image_generation_enabled())

    def test_comfyui_local_reports_missing_required_fields(self):
        settings = Settings(
            IMAGE_GEN_PROVIDER="comfyui_local",
            COMFYUI_URL="http://127.0.0.1:8188",
        )

        self.assertEqual(
            settings.missing_comfyui_local_settings(),
            [
                "COMFYUI_WORKFLOW",
                "COMFYUI_PROMPT_UTILS_PATH",
                "COMFYUI_CLI_PATH",
                "COMFYUI_PYTHON_BIN",
            ],
        )
        self.assertFalse(settings.is_image_generation_enabled())

    def test_api_provider_requires_all_remote_fields(self):
        settings = Settings(
            IMAGE_GEN_PROVIDER="api",
            IMG_GEN_MODEL="demo-model",
        )

        self.assertEqual(
            settings.missing_image_generation_settings(),
            ["IMG_GEN_API_KEY", "IMG_GEN_API_BASE_URL"],
        )
        self.assertFalse(settings.is_image_generation_enabled())

    def test_api_provider_is_enabled_when_remote_fields_are_complete(self):
        settings = Settings(
            IMAGE_GEN_PROVIDER="api",
            IMG_GEN_MODEL="demo-model",
            IMG_GEN_API_KEY="demo-key",
            IMG_GEN_API_BASE_URL="https://example.com/generate",
        )

        self.assertEqual(settings.missing_image_generation_settings(), [])
        self.assertTrue(settings.is_image_generation_enabled())

    def test_comfyui_provider_is_enabled_when_all_local_fields_are_complete(self):
        settings = Settings(
            IMAGE_GEN_PROVIDER="comfyui_local",
            COMFYUI_URL="http://127.0.0.1:8188",
            COMFYUI_WORKFLOW="/tmp/workflow.json",
            COMFYUI_PROMPT_UTILS_PATH="/tmp/prompt_utils.py",
            COMFYUI_CLI_PATH="/tmp/comfyui_cli.py",
            COMFYUI_PYTHON_BIN="/usr/bin/python3",
        )

        self.assertEqual(settings.missing_image_generation_settings(), [])
        self.assertTrue(settings.is_image_generation_enabled())


if __name__ == "__main__":
    unittest.main()