"""Unit tests for ``utilities.js_rendering.read_js_rendering_setting``.

The helper is the single read point for ``web.enable_javascript_rendering``
shared by the agent fetch tool, the ``FullSearchResults`` web-search
"include full content" path, and the MCP strategy's download tool.
"""

from local_deep_research.utilities.js_rendering import (
    read_js_rendering_setting,
)


def _snapshot(value):
    return {
        "web.enable_javascript_rendering": {
            "value": value,
            "ui_element": "checkbox",
        }
    }


def test_default_off_when_no_snapshot_no_context():
    assert read_js_rendering_setting(None) is False


def test_returns_true_when_snapshot_enables():
    assert read_js_rendering_setting(_snapshot(True)) is True


def test_returns_false_when_snapshot_disables():
    assert read_js_rendering_setting(_snapshot(False)) is False


def test_coerces_string_true_to_bool():
    """Snapshots loaded from the DB sometimes carry string-typed values."""
    assert read_js_rendering_setting(_snapshot("true")) is True


def test_coerces_string_false_to_bool():
    assert read_js_rendering_setting(_snapshot("false")) is False


def test_returns_concrete_bool_not_truthy_value():
    """``bool(...)`` coercion pins the return type — never returns Any."""
    result = read_js_rendering_setting(_snapshot(True))
    assert result is True or result is False  # not just truthy
    assert isinstance(result, bool)
