test_hydrate_middleware.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from __future__ import annotations
  2. import pytest
  3. from reflex.app import App
  4. from reflex.middleware.hydrate_middleware import HydrateMiddleware
  5. from reflex.state import State, StateUpdate
  6. class TestState(State):
  7. """A test state with no return in handler."""
  8. __test__ = False
  9. num: int = 0
  10. def test_handler(self):
  11. """Test handler."""
  12. self.num += 1
  13. @pytest.fixture
  14. def hydrate_middleware() -> HydrateMiddleware:
  15. """Fixture creates an instance of HydrateMiddleware per test case.
  16. Returns:
  17. instance of HydrateMiddleware
  18. """
  19. return HydrateMiddleware()
  20. @pytest.mark.asyncio
  21. async def test_preprocess_no_events(hydrate_middleware, event1, mocker):
  22. """Test that app without on_load is processed correctly.
  23. Args:
  24. hydrate_middleware: Instance of HydrateMiddleware
  25. event1: An Event.
  26. mocker: pytest mock object.
  27. """
  28. mocker.patch("reflex.state.State.class_subclasses", {TestState})
  29. state = State()
  30. update = await hydrate_middleware.preprocess(
  31. app=App(_state=State),
  32. event=event1,
  33. state=state,
  34. )
  35. assert isinstance(update, StateUpdate)
  36. assert update.delta == state.dict()
  37. assert not update.events