45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
from collections.abc import AsyncGenerator
|
|
from typing import Callable
|
|
|
|
import httpx
|
|
import pytest
|
|
|
|
from nicegui import core, ui
|
|
from nicegui.functions.download import download
|
|
from nicegui.functions.navigate import Navigate
|
|
from nicegui.functions.notify import notify
|
|
|
|
from .general_fixtures import ( # noqa: F401 # pylint: disable=unused-import
|
|
get_path_to_main_file,
|
|
pytest_addoption,
|
|
pytest_configure,
|
|
)
|
|
from .user import User
|
|
from .user_simulation import prepare_simulation, user_simulation
|
|
|
|
# pylint: disable=redefined-outer-name
|
|
|
|
|
|
@pytest.fixture
|
|
async def user(caplog: pytest.LogCaptureFixture, request: pytest.FixtureRequest) -> AsyncGenerator[User, None]:
|
|
"""Create a new user fixture."""
|
|
async with user_simulation(main_file=get_path_to_main_file(request)) as user:
|
|
yield user
|
|
|
|
logs = [record for record in caplog.get_records('call') if record.levelname == 'ERROR']
|
|
if logs:
|
|
pytest.fail('There were unexpected ERROR logs.', pytrace=False)
|
|
|
|
|
|
@pytest.fixture
|
|
async def create_user(user: User) -> AsyncGenerator[Callable[[], User], None]: # pylint: disable=unused-argument
|
|
"""Create a fixture for building new users."""
|
|
prepare_simulation()
|
|
try:
|
|
async with core.app.router.lifespan_context(core.app):
|
|
yield lambda: User(httpx.AsyncClient(transport=httpx.ASGITransport(core.app), base_url='http://test'))
|
|
finally:
|
|
ui.navigate = Navigate()
|
|
ui.notify = notify
|
|
ui.download = download
|