1
0

test_download.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from pathlib import Path
  2. from typing import Generator
  3. import pytest
  4. from fastapi.responses import PlainTextResponse
  5. from nicegui import app, ui
  6. from nicegui.testing import Screen, screen_plugin
  7. @pytest.fixture
  8. def test_route() -> Generator[str, None, None]:
  9. TEST_ROUTE = '/static/test.txt'
  10. yield TEST_ROUTE
  11. app.remove_route(TEST_ROUTE)
  12. def test_download_text_file(screen: Screen, test_route: str): # pylint: disable=redefined-outer-name
  13. @app.get(test_route)
  14. def test():
  15. return PlainTextResponse('test')
  16. ui.button('Download', on_click=lambda: ui.download(test_route))
  17. screen.open('/')
  18. screen.click('Download')
  19. screen.wait(0.5)
  20. assert (screen_plugin.DOWNLOAD_DIR / 'test.txt').read_text() == 'test'
  21. def test_downloading_local_file_as_src(screen: Screen):
  22. IMAGE_FILE = Path(__file__).parent.parent / 'examples' / 'slideshow' / 'slides' / 'slide1.jpg'
  23. ui.button('download', on_click=lambda: ui.download(IMAGE_FILE))
  24. screen.open('/')
  25. route_count_before_download = len(app.routes)
  26. screen.click('download')
  27. screen.wait(0.5)
  28. assert (screen_plugin.DOWNLOAD_DIR / 'slide1.jpg').exists()
  29. assert len(app.routes) == route_count_before_download
  30. def test_download_raw_data(screen: Screen):
  31. ui.button('download', on_click=lambda: ui.download(b'test', 'test.txt'))
  32. screen.open('/')
  33. screen.click('download')
  34. screen.wait(0.5)
  35. assert (screen_plugin.DOWNLOAD_DIR / 'test.txt').read_text() == 'test'