assert that .render returns jsonable values (#4708)
* assert that .render returns jsonable values * render component default
This commit is contained in:
parent
5beea25b31
commit
58e63f387f
@ -90,7 +90,7 @@
|
||||
break;
|
||||
{% endfor %}
|
||||
default:
|
||||
return {{ component.default }};
|
||||
return {{ render(component.default) }};
|
||||
break;
|
||||
}
|
||||
})()
|
||||
|
@ -65,7 +65,24 @@ class Tag:
|
||||
Yields:
|
||||
Tuple[str, Any]: The field name and value.
|
||||
"""
|
||||
from reflex.components.component import BaseComponent
|
||||
|
||||
for field in dataclasses.fields(self):
|
||||
value = getattr(self, field.name)
|
||||
if isinstance(value, list):
|
||||
children = []
|
||||
for child in value:
|
||||
if isinstance(child, BaseComponent):
|
||||
children.append(child.render())
|
||||
else:
|
||||
children.append(child)
|
||||
yield field.name, children
|
||||
continue
|
||||
if isinstance(value, BaseComponent):
|
||||
yield field.name, value.render()
|
||||
continue
|
||||
if callable(value) and not isinstance(value, Var):
|
||||
continue
|
||||
yield field.name, getattr(self, field.name)
|
||||
|
||||
def add_props(self, **kwargs: Optional[Any]) -> Tag:
|
||||
|
@ -78,7 +78,7 @@ def test_match_components():
|
||||
assert fifth_return_value_render["name"] == "RadixThemesText"
|
||||
assert fifth_return_value_render["children"][0]["contents"] == '{"sixth value"}'
|
||||
|
||||
default = match_child["default"].render()
|
||||
default = match_child["default"]
|
||||
|
||||
assert default["name"] == "RadixThemesText"
|
||||
assert default["children"][0]["contents"] == '{"default value"}'
|
||||
@ -153,7 +153,7 @@ def test_match_on_component_without_default():
|
||||
match_comp = Match.create(MatchState.value, *match_case_tuples)
|
||||
default = match_comp.render()["children"][0]["default"]
|
||||
|
||||
assert isinstance(default, Fragment)
|
||||
assert isinstance(default, dict) and default["name"] == Fragment.__name__
|
||||
|
||||
|
||||
def test_match_on_var_no_default():
|
||||
|
Loading…
Reference in New Issue
Block a user