Skip to content

Commit

Permalink
Add tests for file widget
Browse files Browse the repository at this point in the history
  • Loading branch information
yalef committed Dec 5, 2023
1 parent f1f9c08 commit c3705ff
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
18 changes: 14 additions & 4 deletions import_export_extensions/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,20 +284,30 @@ class FileWidget(CharWidget):
def __init__(self, filename: str):
self.filename = filename

def render(self, value: Model, *args, **kwargs) -> typing.Optional[str]:
def render(
self,
value: typing.Optional[Model],
*args,
**kwargs,
) -> typing.Optional[str]:
"""Convert DB value to URL to file."""
if not value:
return None # pragma: no cover
return None

if self._get_default_storage() == DEFAULT_SYSTEM_STORAGE:
return f"http://localhost:8000{value.url}"

return value.url

def clean(self, value: str, *args, **kwargs) -> typing.Optional[str]:
def clean(
self,
value: typing.Optional[str],
*args,
**kwargs,
) -> typing.Optional[str]:
"""Get the file and check for exists."""
if not value:
return None # pragma: no cover
return None

internal_url = utils.url_to_internal_value(urlparse(value).path)

Expand Down
12 changes: 12 additions & 0 deletions tests/test_widgets/test_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -396,3 +396,15 @@ def test_file_widget_clean_non_existed_url(mocker: MockerFixture):
widget = FileWidget(filename="import_file")
cleaned_result = widget.clean(value="http://testdownload.org/file.csv")
assert isinstance(cleaned_result, File)


def test_file_widget_render_none():
"""Test file widget render return None if no value provided."""
widget = FileWidget(filename="import_file")
assert widget.render(None) is None


def test_file_widget_clean_none():
"""Test file widget clean return None if no value provided."""
widget = FileWidget(filename="import_file")
assert widget.clean(None) is None

0 comments on commit c3705ff

Please sign in to comment.