Khaleel Al-Adhami 2 mēneši atpakaļ
vecāks
revīzija
ec57a3c0c8

+ 1 - 1
tests/units/middleware/test_hydrate_middleware.py

@@ -46,5 +46,5 @@ async def test_preprocess_no_events(hydrate_middleware, event1, mocker):
         state=state,
     )
     assert isinstance(update, StateUpdate)
-    assert update.delta == state.dict()
+    assert update.delta.data == state.dict()
     assert not update.events

+ 11 - 7
tests/units/test_app.py

@@ -480,7 +480,7 @@ async def test_dynamic_var_event(test_state: Type[ATestState], token: str):
             payload={"value": 50},
         )
     ):
-        assert result.delta == {test_state.get_name(): {"int_val": 50}}
+        assert result.delta.data == {test_state.get_name(): {"int_val": 50}}
 
 
 @pytest.mark.asyncio
@@ -594,7 +594,7 @@ async def test_list_mutation_detection__plain_list(
         ):
             # prefix keys in expected_delta with the state name
             expected_delta = {list_mutation_state.get_name(): expected_delta}
-            assert result.delta == expected_delta
+            assert result.delta.data == expected_delta
 
 
 @pytest.mark.asyncio
@@ -720,7 +720,7 @@ async def test_dict_mutation_detection__plain_list(
             # prefix keys in expected_delta with the state name
             expected_delta = {dict_mutation_state.get_name(): expected_delta}
 
-            assert result.delta == expected_delta
+            assert result.delta.data == expected_delta
 
 
 @pytest.mark.asyncio
@@ -1059,7 +1059,8 @@ async def test_dynamic_route_var_route_change_completed_on_load(
                         constants.CompileVars.IS_HYDRATED: False,
                         "router": exp_router,
                     }
-                }
+                },
+                reflex_delta_token=token,
             ),
             events=[
                 _dynamic_state_event(
@@ -1101,7 +1102,8 @@ async def test_dynamic_route_var_route_change_completed_on_load(
                     state.get_name(): {
                         "loaded": exp_index + 1,
                     },
-                }
+                },
+                reflex_delta_token=token,
             ),
             events=[],
         )
@@ -1124,7 +1126,8 @@ async def test_dynamic_route_var_route_change_completed_on_load(
                     state.get_name(): {
                         "is_hydrated": True,
                     },
-                }
+                },
+                reflex_delta_token=token,
             ),
             events=[],
         )
@@ -1147,7 +1150,8 @@ async def test_dynamic_route_var_route_change_completed_on_load(
                     state.get_name(): {
                         "counter": exp_index + 1,
                     }
-                }
+                },
+                reflex_delta_token=token,
             ),
             events=[],
         )

+ 37 - 31
tests/units/test_state.py

@@ -784,7 +784,7 @@ async def test_process_event_simple(test_state):
         assert test_state.num1 == 69
 
         # The delta should contain the changes, including computed vars.
-        assert update.delta == {
+        assert update.delta.data == {
             TestState.get_full_name(): {"num1": 69, "sum": 72.14},
             GrandchildState3.get_full_name(): {"computed": ""},
         }
@@ -811,7 +811,7 @@ async def test_process_event_substate(test_state, child_state, grandchild_state)
     async for update in test_state._process(event):
         assert child_state.value == "HI"
         assert child_state.count == 24
-        assert update.delta == {
+        assert update.delta.data == {
             # TestState.get_full_name(): {"sum": 3.14, "upper": ""},
             ChildState.get_full_name(): {"value": "HI", "count": 24},
             GrandchildState3.get_full_name(): {"computed": ""},
@@ -827,7 +827,7 @@ async def test_process_event_substate(test_state, child_state, grandchild_state)
     )
     async for update in test_state._process(event):
         assert grandchild_state.value2 == "new"
-        assert update.delta == {
+        assert update.delta.data == {
             # TestState.get_full_name(): {"sum": 3.14, "upper": ""},
             GrandchildState.get_full_name(): {"value2": "new"},
             GrandchildState3.get_full_name(): {"computed": ""},
@@ -849,11 +849,11 @@ async def test_process_event_generator():
     async for update in gen:
         count += 1
         if count == 6:
-            assert update.delta == {}
+            assert update.delta.data == {}
             assert update.final
         else:
             assert gen_state.value == count
-            assert update.delta == {
+            assert update.delta.data == {
                 GenState.get_full_name(): {"value": count},
             }
             assert not update.final
@@ -1069,7 +1069,7 @@ def test_not_dirty_computed_var_from_var(
         interdependent_state: A state with varying Var dependencies.
     """
     interdependent_state.x = 5
-    assert interdependent_state.get_delta() == {
+    assert interdependent_state.get_delta().data == {
         interdependent_state.get_full_name(): {"x": 5},
     }
 
@@ -1084,7 +1084,7 @@ def test_dirty_computed_var_from_var(interdependent_state: InterdependentState)
         interdependent_state: A state with varying Var dependencies.
     """
     interdependent_state.v1 = 1
-    assert interdependent_state.get_delta() == {
+    assert interdependent_state.get_delta().data == {
         interdependent_state.get_full_name(): {"v1": 1, "v1x2": 2, "v1x2x2": 4},
     }
 
@@ -1100,7 +1100,7 @@ def test_dirty_computed_var_from_backend_var(
     # Accessing ._v3 returns the immutable var it represents instead of the actual computed var
     # assert InterdependentState._v3._backend is True
     interdependent_state._v2 = 2
-    assert interdependent_state.get_delta() == {
+    assert interdependent_state.get_delta().data == {
         interdependent_state.get_full_name(): {"v2x2": 4, "v3x2": 4},
     }
 
@@ -1271,23 +1271,23 @@ def test_computed_var_cached_depends_on_non_cached():
 
     cs = ComputedState()
     assert cs.dirty_vars == set()
-    assert cs.get_delta() == {cs.get_name(): {"no_cache_v": 0, "dep_v": 0}}
+    assert cs.get_delta().data == {cs.get_name(): {"no_cache_v": 0, "dep_v": 0}}
     cs._clean()
     assert cs.dirty_vars == set()
-    assert cs.get_delta() == {cs.get_name(): {"no_cache_v": 0, "dep_v": 0}}
+    assert cs.get_delta().data == {cs.get_name(): {"no_cache_v": 0, "dep_v": 0}}
     cs._clean()
     assert cs.dirty_vars == set()
     cs.v = 1
     assert cs.dirty_vars == {"v", "comp_v", "dep_v", "no_cache_v"}
-    assert cs.get_delta() == {
+    assert cs.get_delta().data == {
         cs.get_name(): {"v": 1, "no_cache_v": 1, "dep_v": 1, "comp_v": 1}
     }
     cs._clean()
     assert cs.dirty_vars == set()
-    assert cs.get_delta() == {cs.get_name(): {"no_cache_v": 1, "dep_v": 1}}
+    assert cs.get_delta().data == {cs.get_name(): {"no_cache_v": 1, "dep_v": 1}}
     cs._clean()
     assert cs.dirty_vars == set()
-    assert cs.get_delta() == {cs.get_name(): {"no_cache_v": 1, "dep_v": 1}}
+    assert cs.get_delta().data == {cs.get_name(): {"no_cache_v": 1, "dep_v": 1}}
     cs._clean()
     assert cs.dirty_vars == set()
 
@@ -2021,7 +2021,8 @@ async def test_state_proxy(grandchild_state: GrandchildState, mock_app: rx.App):
                 GrandchildState3.get_full_name(): {
                     "computed": "",
                 },
-            }
+            },
+            reflex_delta_token="_" + grandchild_state.get_full_name(),
         )
     )
     assert mcall.kwargs["to"] == grandchild_state.router.session.session_id
@@ -2189,7 +2190,8 @@ async def test_background_task_no_block(mock_app: rx.App, token: str):
                             "other",
                         ],
                     }
-                }
+                },
+                reflex_delta_token=token,
             )
         )
 
@@ -2227,7 +2229,8 @@ async def test_background_task_no_block(mock_app: rx.App, token: str):
                     "order": ["background_task:start"],
                     "computed_order": ["background_task:start"],
                 }
-            }
+            },
+            reflex_delta_token=token + "_" + BackgroundTaskState.get_full_name(),
         ),
         events=[],
         final=True,
@@ -2239,7 +2242,8 @@ async def test_background_task_no_block(mock_app: rx.App, token: str):
                     BackgroundTaskState.get_full_name(): {
                         "computed_order": ["background_task:start"],
                     }
-                }
+                },
+                reflex_delta_token=token + "_" + BackgroundTaskState.get_full_name(),
             ),
             events=[],
             final=True,
@@ -2252,7 +2256,8 @@ async def test_background_task_no_block(mock_app: rx.App, token: str):
                     "computed_order": exp_order,
                     "dict_list": {},
                 }
-            }
+            },
+            reflex_delta_token=token + "_" + BackgroundTaskState.get_full_name(),
         ),
         events=[],
         final=True,
@@ -2263,7 +2268,8 @@ async def test_background_task_no_block(mock_app: rx.App, token: str):
                 BackgroundTaskState.get_full_name(): {
                     "computed_order": exp_order,
                 },
-            }
+            },
+            reflex_delta_token=token,
         ),
         events=[],
         final=True,
@@ -2904,14 +2910,14 @@ async def test_preprocess(app_module_mock, token, test_state, expected, mocker):
         updates.append(update)
     assert len(updates) == 1
     assert updates[0].delta[State.get_name()].pop("router") is not None
-    assert updates[0].delta == exp_is_hydrated(state, False)
+    assert updates[0].delta.data == exp_is_hydrated(state, False)
 
     events = updates[0].events
     assert len(events) == 2
     async for update in state._process(events[0]):
-        assert update.delta == {test_state.get_full_name(): {"num": 1}}
+        assert update.delta.data == {test_state.get_full_name(): {"num": 1}}
     async for update in state._process(events[1]):
-        assert update.delta == exp_is_hydrated(state)
+        assert update.delta.data == exp_is_hydrated(state)
 
     if isinstance(app.state_manager, StateManagerRedis):
         await app.state_manager.close()
@@ -2952,16 +2958,16 @@ async def test_preprocess_multiple_load_events(app_module_mock, token, mocker):
         updates.append(update)
     assert len(updates) == 1
     assert updates[0].delta[State.get_name()].pop("router") is not None
-    assert updates[0].delta == exp_is_hydrated(state, False)
+    assert updates[0].delta.data == exp_is_hydrated(state, False)
 
     events = updates[0].events
     assert len(events) == 3
     async for update in state._process(events[0]):
-        assert update.delta == {OnLoadState.get_full_name(): {"num": 1}}
+        assert update.delta.data == {OnLoadState.get_full_name(): {"num": 1}}
     async for update in state._process(events[1]):
-        assert update.delta == {OnLoadState.get_full_name(): {"num": 2}}
+        assert update.delta.data == {OnLoadState.get_full_name(): {"num": 2}}
     async for update in state._process(events[2]):
-        assert update.delta == exp_is_hydrated(state)
+        assert update.delta.data == exp_is_hydrated(state)
 
     if isinstance(app.state_manager, StateManagerRedis):
         await app.state_manager.close()
@@ -3033,7 +3039,7 @@ async def test_get_state(mock_app: rx.App, token: str):
     )
     grandchild_state.value2 = "set_value"
 
-    assert test_state.get_delta() == {
+    assert test_state.get_delta().data == {
         GrandchildState.get_full_name(): {
             "value2": "set_value",
         },
@@ -3070,7 +3076,7 @@ async def test_get_state(mock_app: rx.App, token: str):
     child_state2 = new_test_state.get_substate((ChildState2.get_name(),))
     child_state2.value = "set_c2_value"
 
-    assert new_test_state.get_delta() == {
+    assert new_test_state.get_delta().data == {
         ChildState2.get_full_name(): {
             "value": "set_c2_value",
         },
@@ -3641,7 +3647,7 @@ def test_get_value():
             "bar": "BAR",
         }
     }
-    assert state.get_delta() == {}
+    assert state.get_delta().data == {}
 
     state.bar = "foo"
 
@@ -3651,7 +3657,7 @@ def test_get_value():
             "bar": "foo",
         }
     }
-    assert state.get_delta() == {
+    assert state.get_delta().data == {
         state.get_full_name(): {
             "bar": "foo",
         }
@@ -3774,7 +3780,7 @@ async def test_upcast_event_handler_arg(handler, payload):
     """
     state = UpcastState()
     async for update in state._process_event(handler, state, payload):
-        assert update.delta == {UpcastState.get_full_name(): {"passed": True}}
+        assert update.delta.data == {UpcastState.get_full_name(): {"passed": True}}
 
 
 @pytest.mark.asyncio