test_upload.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. from typing import Any
  2. from reflex import event
  3. from reflex.components.core.upload import (
  4. StyledUpload,
  5. Upload,
  6. UploadNamespace,
  7. _on_drop_spec, # pyright: ignore [reportAttributeAccessIssue]
  8. cancel_upload,
  9. get_upload_url,
  10. )
  11. from reflex.event import EventSpec
  12. from reflex.state import State
  13. from reflex.vars.base import LiteralVar, Var
  14. class UploadStateTest(State):
  15. """Test upload state."""
  16. @event
  17. def drop_handler(self, files: Any):
  18. """Handle the drop event.
  19. Args:
  20. files: The files dropped.
  21. """
  22. pass
  23. @event
  24. def not_drop_handler(self, not_files: Any):
  25. """Handle the drop event without defining the files argument.
  26. Args:
  27. not_files: The files dropped.
  28. """
  29. pass
  30. def test_cancel_upload():
  31. spec = cancel_upload("foo_id")
  32. assert isinstance(spec, EventSpec)
  33. def test_get_upload_url():
  34. url = get_upload_url("foo_file")
  35. assert isinstance(url, Var)
  36. def test__on_drop_spec():
  37. assert isinstance(_on_drop_spec(LiteralVar.create([])), tuple)
  38. def test_upload_create():
  39. up_comp_1 = Upload.create()
  40. assert isinstance(up_comp_1, Upload)
  41. assert up_comp_1.is_used
  42. # reset is_used
  43. Upload.is_used = False
  44. up_comp_2 = Upload.create(
  45. id="foo_id",
  46. on_drop=UploadStateTest.drop_handler([]),
  47. )
  48. assert isinstance(up_comp_2, Upload)
  49. assert up_comp_2.is_used
  50. # reset is_used
  51. Upload.is_used = False
  52. up_comp_3 = Upload.create(
  53. id="foo_id",
  54. on_drop=UploadStateTest.drop_handler,
  55. )
  56. assert isinstance(up_comp_3, Upload)
  57. assert up_comp_3.is_used
  58. # reset is_used
  59. Upload.is_used = False
  60. up_comp_4 = Upload.create(
  61. id="foo_id",
  62. on_drop=UploadStateTest.not_drop_handler([]),
  63. )
  64. assert isinstance(up_comp_4, Upload)
  65. assert up_comp_4.is_used
  66. def test_styled_upload_create():
  67. styled_up_comp_1 = StyledUpload.create()
  68. assert isinstance(styled_up_comp_1, StyledUpload)
  69. assert styled_up_comp_1.is_used
  70. # reset is_used
  71. StyledUpload.is_used = False
  72. styled_up_comp_2 = StyledUpload.create(
  73. id="foo_id",
  74. on_drop=UploadStateTest.drop_handler([]),
  75. )
  76. assert isinstance(styled_up_comp_2, StyledUpload)
  77. assert styled_up_comp_2.is_used
  78. # reset is_used
  79. StyledUpload.is_used = False
  80. styled_up_comp_3 = StyledUpload.create(
  81. id="foo_id",
  82. on_drop=UploadStateTest.drop_handler,
  83. )
  84. assert isinstance(styled_up_comp_3, StyledUpload)
  85. assert styled_up_comp_3.is_used
  86. # reset is_used
  87. StyledUpload.is_used = False
  88. styled_up_comp_4 = StyledUpload.create(
  89. id="foo_id",
  90. on_drop=UploadStateTest.not_drop_handler([]),
  91. )
  92. assert isinstance(styled_up_comp_4, StyledUpload)
  93. assert styled_up_comp_4.is_used
  94. def test_upload_namespace():
  95. up_ns = UploadNamespace()
  96. assert isinstance(up_ns, UploadNamespace)
  97. assert isinstance(up_ns(id="foo_id"), StyledUpload)
  98. assert isinstance(up_ns.root(id="foo_id"), Upload)