test_event.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from pynecone import event
  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"))
  36. def test_event_redirect():
  37. """Test the event redirect function."""
  38. spec = event.redirect("/path")
  39. assert isinstance(spec, EventSpec)
  40. assert spec.handler.fn.__qualname__ == "_redirect"
  41. assert spec.args == (("path", "/path"),)
  42. def test_event_console_log():
  43. """Test the event console log function."""
  44. spec = event.console_log("message")
  45. assert isinstance(spec, EventSpec)
  46. assert spec.handler.fn.__qualname__ == "_console"
  47. assert spec.args == (("message", "message"),)
  48. def test_event_window_alert():
  49. """Test the event window alert function."""
  50. spec = event.window_alert("message")
  51. assert isinstance(spec, EventSpec)
  52. assert spec.handler.fn.__qualname__ == "_alert"
  53. assert spec.args == (("message", "message"),)