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;
|
break;
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
default:
|
default:
|
||||||
return {{ component.default }};
|
return {{ render(component.default) }};
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
})()
|
})()
|
||||||
|
@ -65,7 +65,24 @@ class Tag:
|
|||||||
Yields:
|
Yields:
|
||||||
Tuple[str, Any]: The field name and value.
|
Tuple[str, Any]: The field name and value.
|
||||||
"""
|
"""
|
||||||
|
from reflex.components.component import BaseComponent
|
||||||
|
|
||||||
for field in dataclasses.fields(self):
|
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)
|
yield field.name, getattr(self, field.name)
|
||||||
|
|
||||||
def add_props(self, **kwargs: Optional[Any]) -> Tag:
|
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["name"] == "RadixThemesText"
|
||||||
assert fifth_return_value_render["children"][0]["contents"] == '{"sixth value"}'
|
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["name"] == "RadixThemesText"
|
||||||
assert default["children"][0]["contents"] == '{"default value"}'
|
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)
|
match_comp = Match.create(MatchState.value, *match_case_tuples)
|
||||||
default = match_comp.render()["children"][0]["default"]
|
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():
|
def test_match_on_var_no_default():
|
||||||
|
Loading…
Reference in New Issue
Block a user