Kaynağa Gözat

add test and disable create set var

Khaleel Al-Adhami 2 hafta önce
ebeveyn
işleme
d24d1ac377
2 değiştirilmiş dosya ile 33 ekleme ve 1 silme
  1. 6 1
      reflex/state.py
  2. 27 0
      tests/units/test_state.py

+ 6 - 1
reflex/state.py

@@ -1095,7 +1095,12 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow):
     @classmethod
     def _create_setvar(cls):
         """Create the setvar method for the state."""
-        cls.setvar = cls.event_handlers["setvar"] = EventHandlerSetVar(state_cls=cls)
+        from reflex.config import get_config
+
+        if get_config().state_auto_setters:
+            cls.setvar = cls.event_handlers["setvar"] = EventHandlerSetVar(
+                state_cls=cls
+            )
 
     @classmethod
     def _create_setter(cls, prop: Var):

+ 27 - 0
tests/units/test_state.py

@@ -3406,6 +3406,33 @@ config = rx.Config(
         del sys.modules[constants.Config.MODULE]
 
 
+def test_auto_setters_off(tmp_path):
+    proj_root = tmp_path / "project1"
+    proj_root.mkdir()
+
+    config_string = """
+import reflex as rx
+config = rx.Config(
+    app_name="project1",
+    state_auto_setters=False,
+)
+    """
+
+    (proj_root / "rxconfig.py").write_text(dedent(config_string))
+
+    with chdir(proj_root):
+        # reload config for each parameter to avoid stale values
+        reflex.config.get_config(reload=True)
+        from reflex.state import State
+
+        class TestState(State):
+            """A test state."""
+
+            num: int = 0
+
+        assert TestState.event_handlers == {}
+
+
 class MixinState(State, mixin=True):
     """A mixin state for testing."""