Files
bracket/backend/tests/integration_tests/api/inputs_test.py
Erik Vroon 558c3163d1 Update pytest asyncio to 0.25.3 (#1110)
Updates the requirements on
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit
the latest version.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](pytest-dev/pytest-asyncio@v0.21.2...v0.25.3)
2025-02-08 11:12:32 +00:00

111 lines
3.8 KiB
Python

import pytest
from bracket.models.db.stage_item_inputs import StageItemInputInsertable
from bracket.utils.dummy_records import (
DUMMY_STAGE1,
DUMMY_STAGE_ITEM1,
DUMMY_TEAM1,
)
from bracket.utils.http import HTTPMethod
from tests.integration_tests.api.shared import (
send_tournament_request,
)
from tests.integration_tests.models import AuthContext
from tests.integration_tests.sql import (
inserted_stage,
inserted_stage_item,
inserted_stage_item_input,
inserted_team,
)
@pytest.mark.asyncio(loop_scope="session")
async def test_available_inputs(
startup_and_shutdown_uvicorn_server: None, auth_context: AuthContext
) -> None:
async with (
inserted_team(
DUMMY_TEAM1.model_copy(update={"tournament_id": auth_context.tournament.id})
) as team_inserted,
inserted_stage(
DUMMY_STAGE1.model_copy(update={"tournament_id": auth_context.tournament.id})
) as stage_inserted_1,
inserted_stage_item(
DUMMY_STAGE_ITEM1.model_copy(
update={"stage_id": stage_inserted_1.id, "ranking_id": auth_context.ranking.id}
)
),
):
response = await send_tournament_request(HTTPMethod.GET, "available_inputs", auth_context)
assert response == {
"data": {str(stage_inserted_1.id): [{"team_id": team_inserted.id, "already_taken": False}]}
}
@pytest.mark.asyncio(loop_scope="session")
async def test_update_stage_item_input(
startup_and_shutdown_uvicorn_server: None, auth_context: AuthContext
) -> None:
async with (
inserted_team(
DUMMY_TEAM1.model_copy(update={"tournament_id": auth_context.tournament.id})
) as team_inserted,
inserted_stage(
DUMMY_STAGE1.model_copy(update={"tournament_id": auth_context.tournament.id})
) as stage_inserted_1,
inserted_stage_item(
DUMMY_STAGE_ITEM1.model_copy(
update={"stage_id": stage_inserted_1.id, "ranking_id": auth_context.ranking.id}
)
) as stage_item_inserted,
inserted_stage_item_input(
StageItemInputInsertable(
slot=0,
team_id=None,
tournament_id=auth_context.tournament.id,
stage_item_id=stage_item_inserted.id,
)
) as stage_item_input1_inserted,
):
response = await send_tournament_request(
HTTPMethod.PUT,
f"stage_items/{stage_item_inserted.id}/inputs/{stage_item_input1_inserted.id}",
auth_context,
json={"team_id": team_inserted.id},
)
assert response == {"success": True}
@pytest.mark.asyncio(loop_scope="session")
async def test_update_stage_item_input_invalid_team(
startup_and_shutdown_uvicorn_server: None, auth_context: AuthContext
) -> None:
async with (
inserted_stage(
DUMMY_STAGE1.model_copy(update={"tournament_id": auth_context.tournament.id})
) as stage_inserted_1,
inserted_stage_item(
DUMMY_STAGE_ITEM1.model_copy(
update={"stage_id": stage_inserted_1.id, "ranking_id": auth_context.ranking.id}
)
) as stage_item_inserted,
inserted_stage_item_input(
StageItemInputInsertable(
slot=0,
team_id=None,
tournament_id=auth_context.tournament.id,
stage_item_id=stage_item_inserted.id,
)
) as stage_item_input1_inserted,
):
response = await send_tournament_request(
HTTPMethod.PUT,
f"stage_items/{stage_item_inserted.id}/inputs/{stage_item_input1_inserted.id}",
auth_context,
json={"team_id": -42},
)
assert response == {"detail": "Could not find team with id -42"}