test_event.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import pytest
  2. from pynecone.event import Event, EventHandler, EventSpec
  3. from pynecone.var import Var
  4. def make_var(value) -> Var:
  5. """Make a variable.
  6. Args:
  7. value: The value of the var.
  8. Returns:
  9. The var.
  10. """
  11. var = Var.create(value)
  12. assert var is not None
  13. return var
  14. def test_create_event():
  15. """Test creating an event."""
  16. event = Event(token="token", name="state.do_thing", payload={"arg": "value"})
  17. assert event.token == "token"
  18. assert event.name == "state.do_thing"
  19. assert event.payload == {"arg": "value"}
  20. def test_call_event_handler():
  21. """Test that calling an event handler creates an event spec."""
  22. def test_fn():
  23. pass
  24. def test_fn_with_args(_, arg1, arg2):
  25. pass
  26. handler = EventHandler(fn=test_fn)
  27. event_spec = handler()
  28. assert event_spec.handler == handler
  29. assert event_spec.local_args == ()
  30. assert event_spec.args == ()
  31. handler = EventHandler(fn=test_fn_with_args)
  32. event_spec = handler(make_var("first"), make_var("second"))
  33. assert event_spec.handler == handler
  34. assert event_spec.local_args == ()
  35. assert event_spec.args == (("arg1", "first"), ("arg2", "second"))