1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- """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 (
- f'onReady={{(...args) => addEvents([Event("{EvState.get_full_name()}.on_ready", {{}})], args, {{}})}}'
- in render_dict["props"]
- )
- assert (
- f'onLoad={{(...args) => addEvents([Event("{EvState.get_full_name()}.on_load", {{}})], args, {{}})}}'
- in render_dict["props"]
- )
- assert (
- f'onError={{(...args) => addEvents([Event("{EvState.get_full_name()}.on_error", {{}})], args, {{}})}}'
- in render_dict["props"]
- )
|