123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- import pytest
- import reflex as rx
- @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_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_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 => ({...filesById, default: e}))}",
- "ref={ref_default}",
- ]
- assert upload["args"] == ("getRootProps", "getInputProps")
- # box inside of upload
- [box] = upload["children"]
- assert box["name"] == "Box"
- assert box["props"] == [
- 'sx={{"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_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 => ({...filesById, default: e}))}",
- "ref={ref_default}",
- ]
|