reflex/tests/units/components/core/test_upload.py
Thomas Brandého 59dd54c049
add workflow to check dependencies on release branch (#4050)
* add workflow to check dependencies on release branch

* rename action to follow convention of other actions

* update workflow

* bump poetry version

* relock deps

* update check to ignore pyright and ruff

* oops, you saw nothing

* split dep check in two job

* fix frontend dep check

* fix stuff

* hmm yeah

* nope nope nope

* sigh

* bump js versions for some packages

* fix some warnings in tests

* fix tests

* try some options

* try to set asyncio policy

* debug dep check

* fix attempt for backend dep

* clean up output for backend check

* run bun outdated on reflex-web to catch most of the packages

* fix python version

* fix python version

* add missing env

* fix bun command

* fix workdir of frontend check

* update packages version

* up-pin plotly.js version

* add debug ouput

* clean frontend dep check output

* fix output

* fix async tests for redis

* relock poetry.lock

* Non-async functions do not need pytest_asyncio.fixture

* test_state: close StateManagerRedis connection in test to avoid warning

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
2024-10-07 20:57:02 +02:00

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.state import State
from reflex.vars.base import LiteralVar, Var
class UploadStateTest(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, Var)
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=UploadStateTest.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=UploadStateTest.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=UploadStateTest.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=UploadStateTest.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=UploadStateTest.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=UploadStateTest.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)