
* use serializer system * add checks for unsupported operands * and and or are now supported * format * remove unnecessary call to JSON * put base before rest * fix failing testcase * add hinting to get static analysis to complain * damn * big changes * get typeguard from extensions * please darglint * dangit darglint * remove one from vars * add without data and use it in plotly * DARGLINT * change format for special props * add pyi * delete instances of Var.create * modify client state to work * fixed so much * remove every Var.create * delete all basevar stuff * checkpoint * fix pyi * get older python to work * dangit darglint * add simple fix to last failing testcase * remove var name unwrapped and put client state on immutable var * fix older python * fox event issues * change forms pyi * make test less strict * use rx state directly * add typeignore to page_id * implement foreach * delete .web states folder silly * update reflex chakra * fix issue when on mount or on unmount is not set * nuke Var * run pyi * import immutablevar in critical location * delete unwrap vars * bring back array ref * fix style props in app * /health endpoint for K8 Liveness and Readiness probes (#3855) * Added API Endpoint * Added API Endpoint * Added Unit Tests * Added Unit Tests * main * Apply suggestions from Code Review * Fix Ruff Formatting * Update Socket Events * Async Functions * Update find_replace (#3886) * [REF-3592]Promote `rx.progress` from radix themes (#3878) * Promote `rx.progress` from radix themes * fix pyi * add warning when accessing `rx._x.progress` * Use correct flexgen backend URL (#3891) * Remove demo template (#3888) * gitignore .web (#3885) * update overflowY in AUTO_HEIGHT_JS from hidden to scroll (#3882) * Retain mutability inside `async with self` block (#3884) When emitting a state update, restore `_self_mutable` to the value it had previously so that `yield` in the middle of `async with self` does not result in an immutable StateProxy. Fix #3869 * Include child imports in markdown component_map (#3883) If a component in the markdown component_map contains children components, use `_get_all_imports` to recursively enumerate them. Fix #3880 * [REF-3570] Remove deprecated REDIS_URL syntax (#3892) * mixin computed vars should only be applied to highest level state (#3833) * improve state hierarchy validation, drop old testing special case (#3894) * fix var dependency dicts (#3842) * Adding array to array pluck operation. (#3868) * fix initial state without cv fallback (#3670) * add fragment to foreach (#3877) * Update docker-example (#3324) * /health endpoint for K8 Liveness and Readiness probes (#3855) * Added API Endpoint * Added API Endpoint * Added Unit Tests * Added Unit Tests * main * Apply suggestions from Code Review * Fix Ruff Formatting * Update Socket Events * Async Functions * /health endpoint for K8 Liveness and Readiness probes (#3855) * Added API Endpoint * Added API Endpoint * Added Unit Tests * Added Unit Tests * main * Apply suggestions from Code Review * Fix Ruff Formatting * Update Socket Events * Async Functions * Merge branch 'main' into use-old-serializer-in-literalvar * [REF-3570] Remove deprecated REDIS_URL syntax (#3892) * /health endpoint for K8 Liveness and Readiness probes (#3855) * Added API Endpoint * Added API Endpoint * Added Unit Tests * Added Unit Tests * main * Apply suggestions from Code Review * Fix Ruff Formatting * Update Socket Events * Async Functions * [REF-3570] Remove deprecated REDIS_URL syntax (#3892) * remove extra var Co-authored-by: Masen Furer <m_github@0x26.net> * resolve typo * write better doc for var.create * return var value when we know it's literal var * fix unit test * less bloat for ToOperations * simplify ImmutableComputedVar.__get__ (#3902) * simplify ImmutableComputedVar.__get__ * ruff it --------- Co-authored-by: Samarth Bhadane <samarthbhadane119@gmail.com> Co-authored-by: Elijah Ahianyo <elijahahianyo@gmail.com> Co-authored-by: Masen Furer <m_github@0x26.net> Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com> Co-authored-by: Vishnu Deva <vishnu.deva12@gmail.com> Co-authored-by: abulvenz <a.eismann@senbax.de>
126 lines
3.0 KiB
Python
126 lines
3.0 KiB
Python
from reflex.components.core.upload import (
|
|
StyledUpload,
|
|
Upload,
|
|
UploadNamespace,
|
|
_on_drop_spec, # type: ignore
|
|
cancel_upload,
|
|
get_upload_url,
|
|
)
|
|
from reflex.event import EventSpec
|
|
from reflex.ivars.base import ImmutableVar, LiteralVar
|
|
from reflex.state import State
|
|
|
|
|
|
class TestUploadState(State):
|
|
"""Test upload state."""
|
|
|
|
def drop_handler(self, files):
|
|
"""Handle the drop event.
|
|
|
|
Args:
|
|
files: The files dropped.
|
|
"""
|
|
pass
|
|
|
|
def not_drop_handler(self, not_files):
|
|
"""Handle the drop event without defining the files argument.
|
|
|
|
Args:
|
|
not_files: The files dropped.
|
|
"""
|
|
pass
|
|
|
|
|
|
def test_cancel_upload():
|
|
spec = cancel_upload("foo_id")
|
|
assert isinstance(spec, EventSpec)
|
|
|
|
|
|
def test_get_upload_url():
|
|
url = get_upload_url("foo_file")
|
|
assert isinstance(url, ImmutableVar)
|
|
|
|
|
|
def test__on_drop_spec():
|
|
assert isinstance(_on_drop_spec(LiteralVar.create([])), list)
|
|
|
|
|
|
def test_upload_create():
|
|
up_comp_1 = Upload.create()
|
|
assert isinstance(up_comp_1, Upload)
|
|
assert up_comp_1.is_used
|
|
|
|
# reset is_used
|
|
Upload.is_used = False
|
|
|
|
up_comp_2 = Upload.create(
|
|
id="foo_id",
|
|
on_drop=TestUploadState.drop_handler([]), # type: ignore
|
|
)
|
|
assert isinstance(up_comp_2, Upload)
|
|
assert up_comp_2.is_used
|
|
|
|
# reset is_used
|
|
Upload.is_used = False
|
|
|
|
up_comp_3 = Upload.create(
|
|
id="foo_id",
|
|
on_drop=TestUploadState.drop_handler,
|
|
)
|
|
assert isinstance(up_comp_3, Upload)
|
|
assert up_comp_3.is_used
|
|
|
|
# reset is_used
|
|
Upload.is_used = False
|
|
|
|
up_comp_4 = Upload.create(
|
|
id="foo_id",
|
|
on_drop=TestUploadState.not_drop_handler([]), # type: ignore
|
|
)
|
|
assert isinstance(up_comp_4, Upload)
|
|
assert up_comp_4.is_used
|
|
|
|
|
|
def test_styled_upload_create():
|
|
styled_up_comp_1 = StyledUpload.create()
|
|
assert isinstance(styled_up_comp_1, StyledUpload)
|
|
assert styled_up_comp_1.is_used
|
|
|
|
# reset is_used
|
|
StyledUpload.is_used = False
|
|
|
|
styled_up_comp_2 = StyledUpload.create(
|
|
id="foo_id",
|
|
on_drop=TestUploadState.drop_handler([]), # type: ignore
|
|
)
|
|
assert isinstance(styled_up_comp_2, StyledUpload)
|
|
assert styled_up_comp_2.is_used
|
|
|
|
# reset is_used
|
|
StyledUpload.is_used = False
|
|
|
|
styled_up_comp_3 = StyledUpload.create(
|
|
id="foo_id",
|
|
on_drop=TestUploadState.drop_handler,
|
|
)
|
|
assert isinstance(styled_up_comp_3, StyledUpload)
|
|
assert styled_up_comp_3.is_used
|
|
|
|
# reset is_used
|
|
StyledUpload.is_used = False
|
|
|
|
styled_up_comp_4 = StyledUpload.create(
|
|
id="foo_id",
|
|
on_drop=TestUploadState.not_drop_handler([]), # type: ignore
|
|
)
|
|
assert isinstance(styled_up_comp_4, StyledUpload)
|
|
assert styled_up_comp_4.is_used
|
|
|
|
|
|
def test_upload_namespace():
|
|
up_ns = UploadNamespace()
|
|
assert isinstance(up_ns, UploadNamespace)
|
|
|
|
assert isinstance(up_ns(id="foo_id"), StyledUpload)
|
|
assert isinstance(up_ns.root(id="foo_id"), Upload)
|