from fastapi import FastAPI
from httpx import AsyncClient
from starlette import status

from zangramru.web.api.puzzles.schema import PuzzleOutputDTO


async def test_get_random_puzzle(fastapi_app: FastAPI, client: AsyncClient) -> None:
    """
    Tests that echo route works.

    :param fastapi_app: current application.
    :param client: client for the app.
    """
    url = fastapi_app.url_path_for("random_puzzle")
    response = await client.get(url)
    assert response.status_code == status.HTTP_200_OK
    dto = PuzzleOutputDTO.model_validate(response.json())
    assert sum(len(row) for row in dto.board) == 16
    assert len(dto.solutions) >= 10
