import pytest
from app.services.aura_core_bridge import (
    _extract_niche_name, _build_site_copy, _build_brand,
    _safe_theme_summary, _safe_valuation_summary
)


class TestExtractNicheName:
    def test_from_valuation(self):
        val = {"niche_valuations": [{"niche_name": "Solar Energy"}]}
        assert _extract_niche_name(val, {}) == "Solar Energy"

    def test_fallback_empty(self):
        result = _extract_niche_name({}, {})
        assert result == "General"


class TestBuildBrand:
    def test_basic(self):
        theme = {"colors": {"primary": "#FF0000", "secondary": "#00FF00", "accent": "#0000FF"}, "mood": "bold"}
        full = {}
        result = _build_brand(theme, full)
        assert result["color_primary"] == "#FF0000"
        assert result["mood"] == "bold"

    def test_empty(self):
        result = _build_brand({}, {})
        assert isinstance(result, dict)


class TestSafeThemeSummary:
    def test_extracts_colors(self):
        theme = {"primary_color": "#111", "secondary_color": "#222", "font_heading": "Inter"}
        result = _safe_theme_summary(theme)
        assert isinstance(result, dict)

    def test_empty(self):
        result = _safe_theme_summary({})
        assert isinstance(result, dict)


class TestSafeValuationSummary:
    def test_extracts_fields(self):
        val = {"estimated_value": 5000, "revenue_potential": 1200}
        result = _safe_valuation_summary(val)
        assert isinstance(result, dict)

    def test_empty(self):
        result = _safe_valuation_summary({})
        assert isinstance(result, dict)
