test_hydrate_middleware.py 1.3 KB

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