|
3 | 3 | from datetime import datetime |
4 | 4 | from unittest.mock import MagicMock |
5 | 5 |
|
| 6 | +import pytest |
| 7 | + |
6 | 8 |
|
7 | 9 | def test_data_models_import_without_textual(): |
8 | 10 | """Data models should import without Textual dependency.""" |
@@ -148,3 +150,43 @@ def test_frontend_build_module(): |
148 | 150 |
|
149 | 151 | assert callable(needs_build) |
150 | 152 | assert callable(ensure_frontend_built) |
| 153 | + |
| 154 | + |
| 155 | +def test_create_app_raises_when_extras_missing(): |
| 156 | + """create_app() should raise ImportError when server extras are missing.""" |
| 157 | + import uipath.dev.server as server_mod |
| 158 | + |
| 159 | + mock_server = MagicMock() |
| 160 | + mock_server.run_service = MagicMock() |
| 161 | + mock_server.connection_manager = MagicMock() |
| 162 | + mock_server.runtime_factory = MagicMock() |
| 163 | + mock_server.trace_manager = MagicMock() |
| 164 | + |
| 165 | + original = server_mod.HAS_EXTRAS |
| 166 | + try: |
| 167 | + server_mod.HAS_EXTRAS = False |
| 168 | + with pytest.raises(ImportError, match="pip install uipath-dev\\[server\\]"): |
| 169 | + mock_server.create_app = server_mod.UiPathDeveloperServer.create_app |
| 170 | + mock_server.create_app(mock_server) |
| 171 | + finally: |
| 172 | + server_mod.HAS_EXTRAS = original |
| 173 | + |
| 174 | + |
| 175 | +@pytest.mark.asyncio |
| 176 | +async def test_run_async_raises_when_extras_missing(): |
| 177 | + """run_async() should raise ImportError when server extras are missing.""" |
| 178 | + import uipath.dev.server as server_mod |
| 179 | + |
| 180 | + mock_server = MagicMock() |
| 181 | + mock_server.run_service = MagicMock() |
| 182 | + mock_server.connection_manager = MagicMock() |
| 183 | + mock_server.runtime_factory = MagicMock() |
| 184 | + mock_server.trace_manager = MagicMock() |
| 185 | + |
| 186 | + original = server_mod.HAS_EXTRAS |
| 187 | + try: |
| 188 | + server_mod.HAS_EXTRAS = False |
| 189 | + with pytest.raises(ImportError, match="pip install uipath-dev\\[server\\]"): |
| 190 | + await server_mod.UiPathDeveloperServer.run_async(mock_server) |
| 191 | + finally: |
| 192 | + server_mod.HAS_EXTRAS = original |
0 commit comments