def test_render_child_props_recursive():
    """DebounceInput should render props from child component.

    If the child component is a DebounceInput, then props will be copied from it
    recursively.
    """
    tag = rx.debounce_input(
        rx.debounce_input(
            rx.debounce_input(
                rx.debounce_input(
                    rx.input(
                        foo="bar",
                        baz="quuc",
                        value="real",
                        on_change=S.on_change,
                    ),
                    value="inner",
                    debounce_timeout=666,
                    force_notify_on_blur=False,
                ),
                debounce_timeout=42,
            ),
            value="outer",
        ),
        force_notify_by_enter=False,
    )._render()
    assert "css" in tag.props
    assert isinstance(tag.props["css"], rx.vars.Var)
    for prop in ["foo", "bar", "baz", "quuc"]:
        assert prop in str(tag.props["css"])
    assert tag.props["value"].equals(LiteralVar.create("outer"))
    assert tag.props["forceNotifyOnBlur"]._js_expr == "false"
    assert tag.props["forceNotifyByEnter"]._js_expr == "false"
    assert tag.props["debounceTimeout"]._js_expr == "42"
    assert len(tag.props["onChange"].events) == 1
    assert tag.props["onChange"].events[0].handler == S.on_change
    assert tag.contents == ""
DebounceInput should render props from child component.

    If the child component is a DebounceInput, then props will be copied from it
    recursively.
    
tests/units/components/core/test_debounce.py