"""Tests for the reporting engine outputs."""

from web_sentinel.model import Finding, ScanRequest, ScanResult
from web_sentinel.reporting import ReportEngine


def _sample_scan_result() -> ScanResult:
    request = ScanRequest(domain="example.com")
    finding = Finding(
        check="source-code",
        title="Hardcoded credentials detected",
        severity="high",
        description="password variable contains a literal value",
        remediation="Load credentials from environment variables.",
    )
    return ScanResult(request=request, findings=[finding])


def test_report_engine_json_output_contains_domain():
    engine = ReportEngine()
    result = _sample_scan_result()

    context = engine.build_context(result)
    json_payload = engine.render_json(context)

    assert "example.com" in json_payload
    assert "Hardcoded credentials" in json_payload


def test_report_engine_html_output_has_structure():
    engine = ReportEngine()
    result = _sample_scan_result()

    context = engine.build_context(result)
    html_payload = engine.render_html(context)

    assert "<html" in html_payload.lower()
    assert "example.com" in html_payload
    assert "Hardcoded credentials" in html_payload
