add test for default factory with rx.foreach

This commit is contained in:
Benedikt Bartscher 2024-12-10 23:34:24 +01:00
parent ce364e0bce
commit 3280ac9bd3
No known key found for this signature in database

View File

@ -1,8 +1,10 @@
from typing import Dict, List, Set, Tuple, Union from typing import Dict, List, Set, Tuple, Union
import pydantic.v1
import pytest import pytest
from reflex import el from reflex import el
from reflex.base import Base
from reflex.components.component import Component from reflex.components.component import Component
from reflex.components.core.foreach import ( from reflex.components.core.foreach import (
Foreach, Foreach,
@ -18,6 +20,12 @@ from reflex.vars.number import NumberVar
from reflex.vars.sequence import ArrayVar from reflex.vars.sequence import ArrayVar
class ForEachTag(Base):
"""A tag for testing the ForEach component."""
name: str = ""
class ForEachState(BaseState): class ForEachState(BaseState):
"""A state for testing the ForEach component.""" """A state for testing the ForEach component."""
@ -46,6 +54,8 @@ class ForEachState(BaseState):
bad_annotation_list: list = [["red", "orange"], ["yellow", "blue"]] bad_annotation_list: list = [["red", "orange"], ["yellow", "blue"]]
color_index_tuple: Tuple[int, str] = (0, "red") color_index_tuple: Tuple[int, str] = (0, "red")
default_factory_list: list[ForEachTag] = pydantic.v1.Field(default_factory=list)
class ComponentStateTest(ComponentState): class ComponentStateTest(ComponentState):
"""A test component state.""" """A test component state."""
@ -290,3 +300,11 @@ def test_foreach_component_state():
ForEachState.colors_list, ForEachState.colors_list,
ComponentStateTest.create, ComponentStateTest.create,
) )
def test_foreach_default_factory():
"""Test that the default factory is called."""
_ = Foreach.create(
ForEachState.default_factory_list,
lambda tag: text(tag.name),
)