test_fullscreen.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from unittest.mock import patch
  2. import pytest
  3. from nicegui import ui
  4. from nicegui.testing import Screen
  5. @pytest.mark.parametrize('require_escape_hold', [True, False])
  6. def test_fullscreen_creation(screen: Screen, require_escape_hold: bool):
  7. fullscreen = ui.fullscreen(require_escape_hold=require_escape_hold)
  8. assert not fullscreen.value
  9. assert fullscreen.require_escape_hold == require_escape_hold
  10. screen.open('/')
  11. def test_fullscreen_methods(screen: Screen):
  12. values = []
  13. fullscreen = ui.fullscreen(on_value_change=lambda e: values.append(e.value))
  14. screen.open('/')
  15. with patch.object(fullscreen, 'run_method') as mock_run:
  16. fullscreen.enter()
  17. mock_run.assert_called_once_with('enter')
  18. mock_run.reset_mock()
  19. fullscreen.exit()
  20. mock_run.assert_called_once_with('exit')
  21. mock_run.reset_mock()
  22. fullscreen.toggle()
  23. mock_run.assert_called_once_with('enter')
  24. mock_run.reset_mock()
  25. fullscreen.value = False
  26. mock_run.assert_called_once_with('exit')
  27. mock_run.reset_mock()
  28. fullscreen.value = True
  29. mock_run.assert_called_once_with('enter')
  30. mock_run.reset_mock()
  31. assert values == [True, False, True, False, True]
  32. def test_fullscreen_button_click(screen: Screen):
  33. """Test that clicking a button to enter fullscreen creates the correct JavaScript call.
  34. Note: We cannot test actual fullscreen behavior as it requires user interaction,
  35. but we can verify the JavaScript method is called correctly.
  36. """
  37. values = []
  38. fullscreen = ui.fullscreen(on_value_change=lambda e: values.append(e.value))
  39. ui.button('Enter Fullscreen', on_click=fullscreen.enter)
  40. ui.button('Exit Fullscreen', on_click=fullscreen.exit)
  41. screen.open('/')
  42. screen.click('Enter Fullscreen')
  43. screen.wait(0.5)
  44. assert values == [True]
  45. screen.click('Exit Fullscreen')
  46. screen.wait(0.5)
  47. assert values == [True, False]