reflex/tests/components/base/test_script.py
Thomas Brandého 0d39237b3c
upgrade to latest ruff (#3497)
* upgrade to latest ruff

* try to fix dep review

* try to fix dep review (2)

* upgrade black

* upgrade black (2)

* update allowed dependencies

* update allowed dependencies (2)

* update allowed dependencies (3)

* wait between interim and final in yield test

* remove previous commit, increase delay between yield

* forgot to save on the time.sleep(1) removal

* fix integration (maybe?)

* fix pyi?

* what even is going on

* what is realityi?

* test another fix for app harness

* try to wait even longer?

* force uvloop to be optional

* downpin fastapi < 0.111, remove changes to test
2024-06-19 12:32:13 +02:00

72 lines
1.9 KiB
Python

"""Test that Script from next/script renders correctly."""
import pytest
from reflex.components.base.script import Script
from reflex.state import BaseState
def test_script_inline():
"""Test inline scripts are rendered as children."""
component = Script.create("let x = 42")
render_dict = component.render()
assert render_dict["name"] == "Script"
assert not render_dict["contents"]
assert len(render_dict["children"]) == 1
assert render_dict["children"][0]["contents"] == "{`let x = 42`}"
def test_script_src():
"""Test src prop is rendered without children."""
component = Script.create(src="foo.js")
render_dict = component.render()
assert render_dict["name"] == "Script"
assert not render_dict["contents"]
assert not render_dict["children"]
assert "src={`foo.js`}" in render_dict["props"]
def test_script_neither():
"""Specifying neither children nor src is a ValueError."""
with pytest.raises(ValueError):
Script.create()
class EvState(BaseState):
"""State for testing event handlers."""
def on_ready(self):
"""Empty event handler."""
pass
def on_load(self):
"""Empty event handler."""
pass
def on_error(self):
"""Empty event handler."""
pass
def test_script_event_handler():
"""Test event handlers are rendered as expected."""
component = Script.create(
src="foo.js",
on_ready=EvState.on_ready,
on_load=EvState.on_load,
on_error=EvState.on_error,
)
render_dict = component.render()
assert (
'onReady={(_e) => addEvents([Event("ev_state.on_ready", {})], (_e), {})}'
in render_dict["props"]
)
assert (
'onLoad={(_e) => addEvents([Event("ev_state.on_load", {})], (_e), {})}'
in render_dict["props"]
)
assert (
'onError={(_e) => addEvents([Event("ev_state.on_error", {})], (_e), {})}'
in render_dict["props"]
)