|
@@ -0,0 +1,79 @@
|
|
|
+import os
|
|
|
+
|
|
|
+import pytest
|
|
|
+
|
|
|
+import pynecone as pc
|
|
|
+
|
|
|
+
|
|
|
+@pytest.fixture
|
|
|
+def upload_component():
|
|
|
+ """A test upload component function.
|
|
|
+
|
|
|
+ Returns:
|
|
|
+ A test upload component function.
|
|
|
+ """
|
|
|
+
|
|
|
+ def upload_component():
|
|
|
+ return pc.upload(
|
|
|
+ pc.button("select file"),
|
|
|
+ pc.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 pc.upload(
|
|
|
+ pc.button("select file"),
|
|
|
+ pc.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
|
|
|
+ """
|
|
|
+ assert (
|
|
|
+ str(upload_component) == f"<ReactDropzone multiple={{true}}{os.linesep}"
|
|
|
+ "onDrop={e => File(e)}>{({getRootProps, getInputProps}) => (<Box "
|
|
|
+ 'sx={{"border": "1px dotted black"}}{...getRootProps()}><Input '
|
|
|
+ f'type="file"{{...getInputProps()}}/>{os.linesep}'
|
|
|
+ f"<Button>{{`select file`}}</Button>{os.linesep}"
|
|
|
+ "<Text>{`Drag and drop files here or click to select "
|
|
|
+ "files`}</Text></Box>)}</ReactDropzone>"
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+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
|
|
|
+ """
|
|
|
+ assert (
|
|
|
+ str(upload_component_with_props) == f"<ReactDropzone maxFiles={{2}}{os.linesep}"
|
|
|
+ f"multiple={{true}}{os.linesep}"
|
|
|
+ f"noDrag={{true}}{os.linesep}"
|
|
|
+ "onDrop={e => File(e)}>{({getRootProps, getInputProps}) => (<Box "
|
|
|
+ 'sx={{"border": "1px dotted black"}}{...getRootProps()}><Input '
|
|
|
+ f'type="file"{{...getInputProps()}}/>{os.linesep}'
|
|
|
+ f"<Button>{{`select file`}}</Button>{os.linesep}"
|
|
|
+ "<Text>{`Drag and drop files here or click to select "
|
|
|
+ "files`}</Text></Box>)}</ReactDropzone>"
|
|
|
+ )
|