make integration tests pass
This commit is contained in:
parent
3d7ea3735c
commit
69f0d1db0b
@ -268,6 +268,8 @@ async def test_submit(driver, form_submit: AppHarness):
|
||||
|
||||
form_data = format.collect_form_dict_names(form_data)
|
||||
|
||||
print(form_data)
|
||||
|
||||
assert form_data["name_input"] == "foo"
|
||||
assert form_data["pin_input"] == pin_values
|
||||
assert form_data["number_input"] == "-3"
|
||||
|
@ -107,7 +107,7 @@ def test_tailwind_app(tailwind_app: AppHarness, tailwind_disabled: bool):
|
||||
assert len(paragraphs) == 3
|
||||
for p in paragraphs:
|
||||
assert tailwind_app.poll_for_content(p, exp_not_equal="") == PARAGRAPH_TEXT
|
||||
assert p.value_of_css_property("font-family") == "monospace"
|
||||
assert p.value_of_css_property("font-family") == '"monospace"'
|
||||
if tailwind_disabled:
|
||||
# expect default color, not "text-red-500" from tailwind utility class
|
||||
assert p.value_of_css_property("color") not in TEXT_RED_500_COLOR
|
||||
|
@ -1113,7 +1113,11 @@ class App(MiddlewareMixin, LifespanMixin, Base):
|
||||
Returns:
|
||||
Task if the event was backgroundable, otherwise None
|
||||
"""
|
||||
# print("Processing background", repr(event))
|
||||
substate, handler = state._get_event_handler(event)
|
||||
# print("Substate", substate)
|
||||
# print("Handler", handler)
|
||||
|
||||
if not handler.is_background:
|
||||
return None
|
||||
|
||||
|
@ -4,10 +4,12 @@ from __future__ import annotations
|
||||
|
||||
from typing import Optional
|
||||
|
||||
import reflex as rx
|
||||
from reflex.components.chakra import ChakraComponent, LiteralInputVariant
|
||||
from reflex.components.component import Component
|
||||
from reflex.components.tags.tag import Tag
|
||||
from reflex.event import EventHandler
|
||||
from reflex.ivars import ArrayVar
|
||||
from reflex.utils import format
|
||||
from reflex.utils.imports import ImportDict, merge_imports
|
||||
from reflex.vars import Var
|
||||
@ -186,7 +188,10 @@ class PinInputField(ChakraComponent):
|
||||
props["name"] = f"{name}-{i}"
|
||||
return PinInputField.create(**props, index=i, key=i)
|
||||
|
||||
return Var.range(length).foreach(_create) # type: ignore
|
||||
return rx.foreach( # type: ignore
|
||||
ArrayVar.range(length), # type: ignore
|
||||
_create,
|
||||
)
|
||||
|
||||
def _get_ref_hook(self) -> Optional[str]:
|
||||
return None
|
||||
|
@ -11,7 +11,7 @@ from reflex.components.el.element import Element
|
||||
from reflex.components.tags.tag import Tag
|
||||
from reflex.constants import Dirs, EventTriggers
|
||||
from reflex.event import EventChain, EventHandler
|
||||
from reflex.ivars.base import ImmutableVar
|
||||
from reflex.ivars.base import ImmutableVar, LiteralVar
|
||||
from reflex.utils.format import format_event_chain
|
||||
from reflex.utils.imports import ImportDict
|
||||
from reflex.vars import Var, VarData
|
||||
@ -185,7 +185,7 @@ class Form(BaseHTML):
|
||||
HANDLE_SUBMIT_JS_JINJA2.render(
|
||||
handle_submit_unique_name=self.handle_submit_unique_name,
|
||||
form_data=FORM_DATA,
|
||||
field_ref_mapping=str(Var.create_safe(self._get_form_refs())),
|
||||
field_ref_mapping=str(LiteralVar.create(self._get_form_refs())),
|
||||
on_submit_event_chain=format_event_chain(
|
||||
self.event_triggers[EventTriggers.ON_SUBMIT]
|
||||
),
|
||||
@ -213,21 +213,18 @@ class Form(BaseHTML):
|
||||
# when ref start with refs_ it's an array of refs, so we need different method
|
||||
# to collect data
|
||||
if ref.startswith("refs_"):
|
||||
ref_var = Var.create_safe(ref[:-3], _var_is_string=False).as_ref()
|
||||
form_refs[ref[5:-3]] = Var.create_safe(
|
||||
ref_var = ImmutableVar.create_safe(ref[:-3]).as_ref()
|
||||
form_refs[ref[len("refs_") : -3]] = ImmutableVar.create_safe(
|
||||
f"getRefValues({str(ref_var)})",
|
||||
_var_is_local=False,
|
||||
_var_is_string=False,
|
||||
_var_data=VarData.merge(ref_var._get_all_var_data()),
|
||||
)
|
||||
else:
|
||||
ref_var = Var.create_safe(ref, _var_is_string=False).as_ref()
|
||||
form_refs[ref[4:]] = Var.create_safe(
|
||||
ref_var = ImmutableVar.create_safe(ref).as_ref()
|
||||
form_refs[ref[4:]] = ImmutableVar.create_safe(
|
||||
f"getRefValue({str(ref_var)})",
|
||||
_var_is_local=False,
|
||||
_var_is_string=False,
|
||||
_var_data=VarData.merge(ref_var._get_all_var_data()),
|
||||
)
|
||||
# print(repr(form_refs))
|
||||
return form_refs
|
||||
|
||||
def _get_vars(self, include_children: bool = True) -> Iterator[Var]:
|
||||
|
@ -724,7 +724,7 @@ class ImmutableVar(Var, Generic[VAR_TYPE]):
|
||||
}
|
||||
),
|
||||
).to(ObjectVar)
|
||||
return refs[self]
|
||||
return refs[LiteralVar.create(str(self))]
|
||||
|
||||
def _type(self) -> StringVar:
|
||||
"""Returns the type of the object.
|
||||
@ -804,7 +804,7 @@ class LiteralVar(ImmutableVar):
|
||||
|
||||
if isinstance(value, EventSpec):
|
||||
event_name = LiteralVar.create(
|
||||
".".join(get_event_handler_parts(value.handler))
|
||||
".".join(filter(None, get_event_handler_parts(value.handler)))
|
||||
)
|
||||
event_args = LiteralVar.create(
|
||||
{str(name): value for name, value in value.args}
|
||||
|
@ -29,7 +29,12 @@ from typing_extensions import get_origin
|
||||
from reflex import constants
|
||||
from reflex.constants.base import REFLEX_VAR_OPENING_TAG
|
||||
from reflex.utils.types import GenericType
|
||||
from reflex.vars import ImmutableVarData, Var, VarData, _global_vars
|
||||
from reflex.vars import (
|
||||
ImmutableVarData,
|
||||
Var,
|
||||
VarData,
|
||||
_global_vars,
|
||||
)
|
||||
|
||||
from .base import (
|
||||
CachedVarOperation,
|
||||
|
@ -666,7 +666,7 @@ def format_queue_events(
|
||||
call_event_fn,
|
||||
call_event_handler,
|
||||
)
|
||||
from reflex.ivars.base import FunctionVar, ImmutableVar
|
||||
from reflex.ivars import FunctionVar, ImmutableVar
|
||||
|
||||
if not events:
|
||||
return ImmutableVar("(() => null)").to(FunctionVar, EventChain)
|
||||
@ -804,8 +804,8 @@ def format_array_ref(refs: str, idx: Var | None) -> str:
|
||||
"""
|
||||
clean_ref = re.sub(r"[^\w]+", "_", refs)
|
||||
if idx is not None:
|
||||
idx._var_is_local = True
|
||||
return f"refs_{clean_ref}[{idx}]"
|
||||
# idx._var_is_local = True
|
||||
return f"refs_{clean_ref}[{str(idx)}]"
|
||||
return f"refs_{clean_ref}"
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user