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>" )