test_download.py 1.4 KB

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