diff --git a/reflex/components/core/upload.py b/reflex/components/core/upload.py index ad5bdc46b..718e266b8 100644 --- a/reflex/components/core/upload.py +++ b/reflex/components/core/upload.py @@ -229,7 +229,6 @@ class Upload(MemoizationLeaf): Args: *children: The children of the component. - multiple: Whether to allow multiple files to be uploaded. **props: The properties of the component. Returns: diff --git a/reflex/components/core/upload.pyi b/reflex/components/core/upload.pyi index dfe0b7e5e..ded465e71 100644 --- a/reflex/components/core/upload.pyi +++ b/reflex/components/core/upload.pyi @@ -137,7 +137,6 @@ class Upload(MemoizationLeaf): Args: *children: The children of the component. - multiple: Whether to allow multiple files to be uploaded. accept: The list of accepted file types. This should be a dictionary of MIME types as keys and array of file formats as values. supported MIME types: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types disabled: Whether the dropzone is disabled. max_files: The maximum number of files that can be uploaded. diff --git a/tests/integration/test_var_operations.py b/tests/integration/test_var_operations.py index 919a39f3b..30ebad96d 100644 --- a/tests/integration/test_var_operations.py +++ b/tests/integration/test_var_operations.py @@ -710,7 +710,7 @@ def test_var_operations(driver, var_operations: AppHarness): ("float_neq_str", "true"), # float, list ("float_or_list", "10.5"), - ("float_and_list", "[1,2]"), + ("float_and_list", "12"), ("float_eq_list", "false"), ("float_neq_list", "true"), # float, dict @@ -739,7 +739,7 @@ def test_var_operations(driver, var_operations: AppHarness): ("str_eq_int", "false"), ("str_neq_int", "true"), # str, list - ("str_and_list", "[1,2]"), + ("str_and_list", "12"), ("str_or_list", "first"), ("str_eq_list", "false"), ("str_neq_list", "true"), @@ -757,7 +757,7 @@ def test_var_operations(driver, var_operations: AppHarness): ("list_eq_list", "false"), ("list_neq_list", "true"), ("list_and_list", "[3,4]"), - ("list_or_list", "[1,2]"), + ("list_or_list", "12"), ("list_contains", "true"), ("list_pluck", '["obj_1","obj_2"]'), ("list_reverse", "[2,1]"), @@ -769,13 +769,13 @@ def test_var_operations(driver, var_operations: AppHarness): ("list_join_range4", "0,1,2"), # list, int ("list_mult_int", "[1,2,1,2,1,2,1,2,1,2]"), - ("list_or_int", "[1,2]"), + ("list_or_int", "12"), ("list_and_int", "10"), ("list_eq_int", "false"), ("list_neq_int", "true"), # list, dict ("list_and_dict", '{"1":2}'), - ("list_or_dict", "[1,2]"), + ("list_or_dict", "12"), ("list_eq_dict", "false"), ("list_neq_dict", "true"), # dict, dict @@ -793,7 +793,7 @@ def test_var_operations(driver, var_operations: AppHarness): ("foreach_list_ix", "1\n2"), ("foreach_list_nested", "1\n1\n2"), # rx.memo component with state - ("memo_comp", "[1,2]10"), + ("memo_comp", "1210"), ("memo_comp_nested", "[3,4]5"), # foreach in a match ("foreach_in_match", "first\nsecond\nthird"), diff --git a/tests/units/components/forms/test_uploads.py b/tests/units/components/forms/test_uploads.py deleted file mode 100644 index 3b2ee014f..000000000 --- a/tests/units/components/forms/test_uploads.py +++ /dev/null @@ -1,205 +0,0 @@ -import pytest - -import reflex as rx - - -@pytest.fixture -def upload_root_component(): - """A test upload component function. - - Returns: - A test upload component function. - """ - - def upload_root_component(): - return rx.upload.root( - rx.button("select file"), - rx.text("Drag and drop files here or click to select files"), - border="1px dotted black", - ) - - return upload_root_component() - - -@pytest.fixture -def upload_component(): - """A test upload component function. - - Returns: - A test upload component function. - """ - - def upload_component(): - return rx.upload( - rx.button("select file"), - rx.text("Drag and drop files here or click to select files"), - border="1px dotted black", - ) - - return upload_component() - - -@pytest.fixture -def upload_component_id_special(): - def upload_component(): - return rx.upload( - rx.button("select file"), - rx.text("Drag and drop files here or click to select files"), - border="1px dotted black", - id="#spec!`al-_98ID", - ) - - return upload_component() - - -@pytest.fixture -def upload_component_with_props(): - """A test upload component with props function. - - Returns: - A test upload component with props function. - """ - - def upload_component_with_props(): - return rx.upload( - rx.button("select file"), - rx.text("Drag and drop files here or click to select files"), - border="1px dotted black", - no_drag=True, - max_files=2, - ) - - return upload_component_with_props() - - -def test_upload_root_component_render(upload_root_component): - """Test that the render function is set correctly. - - Args: - upload_root_component: component fixture - """ - upload = upload_root_component.render() - - # upload - assert upload["name"] == "ReactDropzone" - assert upload["props"] == [ - 'id={"default"}', - "multiple={true}", - "onDrop={e => setFilesById(filesById => {\n" - " const updatedFilesById = Object.assign({}, filesById);\n" - ' updatedFilesById["default"] = e;\n' - " return updatedFilesById;\n" - " })\n" - " }", - "ref={ref_default}", - ] - assert upload["args"] == ("getRootProps", "getInputProps") - - # box inside of upload - [box] = upload["children"] - assert box["name"] == "RadixThemesBox" - assert box["props"] == [ - 'className={"rx-Upload"}', - 'css={({ ["border"] : "1px dotted black" })}', - "{...getRootProps()}", - ] - - # input, button and text inside of box - [input, button, text] = box["children"] - assert input["name"] == "input" - assert input["props"] == ['type={"file"}', "{...getInputProps()}"] - - assert button["name"] == "RadixThemesButton" - assert button["children"][0]["contents"] == '{"select file"}' - - assert text["name"] == "RadixThemesText" - assert ( - text["children"][0]["contents"] - == '{"Drag and drop files here or click to select files"}' - ) - - -def test_upload_component_render(upload_component): - """Test that the render function is set correctly. - - Args: - upload_component: component fixture - """ - upload = upload_component.render() - - # upload - assert upload["name"] == "ReactDropzone" - assert upload["props"] == [ - 'id={"default"}', - "multiple={true}", - "onDrop={e => setFilesById(filesById => {\n" - " const updatedFilesById = Object.assign({}, filesById);\n" - ' updatedFilesById["default"] = e;\n' - " return updatedFilesById;\n" - " })\n" - " }", - "ref={ref_default}", - ] - assert upload["args"] == ("getRootProps", "getInputProps") - - # box inside of upload - [box] = upload["children"] - assert box["name"] == "RadixThemesBox" - assert box["props"] == [ - 'className={"rx-Upload"}', - 'css={({ ["border"] : "1px dotted black", ["padding"] : "5em", ["textAlign"] : "center" })}', - "{...getRootProps()}", - ] - - # input, button and text inside of box - [input, button, text] = box["children"] - assert input["name"] == "input" - assert input["props"] == ['type={"file"}', "{...getInputProps()}"] - - assert button["name"] == "RadixThemesButton" - assert button["children"][0]["contents"] == '{"select file"}' - - assert text["name"] == "RadixThemesText" - assert ( - text["children"][0]["contents"] - == '{"Drag and drop files here or click to select files"}' - ) - - -def test_upload_component_with_props_render(upload_component_with_props): - """Test that the render function is set correctly. - - Args: - upload_component_with_props: component fixture - """ - upload = upload_component_with_props.render() - - assert upload["props"] == [ - 'id={"default"}', - "maxFiles={2}", - "multiple={true}", - "noDrag={true}", - "onDrop={e => setFilesById(filesById => {\n" - " const updatedFilesById = Object.assign({}, filesById);\n" - ' updatedFilesById["default"] = e;\n' - " return updatedFilesById;\n" - " })\n" - " }", - "ref={ref_default}", - ] - - -def test_upload_component_id_with_special_chars(upload_component_id_special): - upload = upload_component_id_special.render() - - assert upload["props"] == [ - r'id={"#spec!`al-_98ID"}', - "multiple={true}", - "onDrop={e => setFilesById(filesById => {\n" - " const updatedFilesById = Object.assign({}, filesById);\n" - ' updatedFilesById["#spec!`al-_98ID"] = e;\n' - " return updatedFilesById;\n" - " })\n" - " }", - "ref={ref__spec_al__98ID}", - ]