assert that .render returns jsonable values

This commit is contained in:
Khaleel Al-Adhami 2025-01-28 16:05:59 -08:00
parent 3bd2bea54d
commit 04edc6d5bf
2 changed files with 17 additions and 2 deletions

View File

@ -65,7 +65,22 @@ 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
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:

View File

@ -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():