diff --git a/api/tests/conftest.py b/api/tests/conftest.py index 47c5664..4e9a30d 100644 --- a/api/tests/conftest.py +++ b/api/tests/conftest.py @@ -12,7 +12,7 @@ ASYNC_DB_URL = "sqlite+aiosqlite:///:memory:" -@pytest.fixture +@pytest.fixture(scope="module") async def async_client() -> AsyncGenerator[AsyncClient, None]: # Async用のengineとsessionを作成 async_engine = create_async_engine(ASYNC_DB_URL, echo=True) diff --git a/api/tests/cruds/conftest.py b/api/tests/cruds/conftest.py deleted file mode 100644 index 9b56a85..0000000 --- a/api/tests/cruds/conftest.py +++ /dev/null @@ -1,38 +0,0 @@ -import pytest -import starlette.status - - -@pytest.fixture(scope="session") -async def raspi_fixture(async_client): - raspi_1 = await async_client.post("/v2/raspis", json={"name": "raspi_1"}) - assert raspi_1.status_code == starlette.status.HTTP_200_OK - raspi_2 = await async_client.post("/v2/raspis", json={"name": "raspi_2"}) - assert raspi_2.status_code == starlette.status.HTTP_200_OK - return [raspi_1.json(), raspi_2.json()] - - -@pytest.fixture(scope="session") -async def user_fixture(async_client, raspi_fixture): - user_1 = await async_client.post( - "/v2/users", json={"raspi_id": raspi_fixture[0]["id"], "name": "user_1"} - ) - assert user_1.status_code == starlette.status.HTTP_200_OK - user_2 = await async_client.post( - "/v2/users", json={"raspi_id": raspi_fixture[1]["id"], "name": "user_2"} - ) - assert user_2.status_code == starlette.status.HTTP_200_OK - return [user_1.json(), user_2.json()] - - -@pytest.fixture(scope="session") -async def couple_fixture(async_client, user_fixture): - couple_1 = await async_client.post( - "/v2/couples", - json={ - "user1_id": user_fixture[0]["id"], - "user2_id": user_fixture[1]["id"], - "name": "couple_1", - }, - ) - assert couple_1.status_code == starlette.status.HTTP_200_OK - return couple_1.json() diff --git a/api/tests/raspi/conftest.py b/api/tests/raspi/conftest.py new file mode 100644 index 0000000..2695556 --- /dev/null +++ b/api/tests/raspi/conftest.py @@ -0,0 +1,37 @@ +import pytest +import starlette.status + + +@pytest.fixture(scope="module") +async def raspi_fixture(async_client): + raspi_1 = await async_client.post("/v2/raspis/", json={"name": "raspi_1"}) + assert raspi_1.status_code == starlette.status.HTTP_200_OK + raspi_2 = await async_client.post("/v2/raspis/", json={"name": "raspi_2"}) + assert raspi_2.status_code == starlette.status.HTTP_200_OK + + user_1 = await async_client.post( + "/v2/users/", json={"raspi_id": raspi_1.json()["id"], "name": "user_1"} + ) + assert user_1.status_code == starlette.status.HTTP_200_OK + user_2 = await async_client.post( + "/v2/users/", json={"raspi_id": raspi_2.json()["id"], "name": "user_2"} + ) + assert user_2.status_code == starlette.status.HTTP_200_OK + + couple_1 = await async_client.post( + "/v2/couples/", + json={ + "user1_id": user_1.json()["id"], + "user2_id": user_2.json()["id"], + "name": "couple_1", + }, + ) + assert couple_1.status_code == starlette.status.HTTP_200_OK + + return { + "raspi_1": raspi_1.json(), + "raspi_2": raspi_2.json(), + "user_1": user_1.json(), + "user_2": user_2.json(), + "couple_1": couple_1.json(), + } diff --git a/api/tests/test_v1_raspi.py b/api/tests/raspi/test_v1_raspi.py similarity index 100% rename from api/tests/test_v1_raspi.py rename to api/tests/raspi/test_v1_raspi.py diff --git a/api/tests/raspi/test_v2_raspi.py b/api/tests/raspi/test_v2_raspi.py new file mode 100644 index 0000000..1d9b901 --- /dev/null +++ b/api/tests/raspi/test_v2_raspi.py @@ -0,0 +1,34 @@ +import pytest +import starlette.status + + +@pytest.mark.asyncio +async def test_transcribe_and_respond(async_client, raspi_fixture): + raspi_1 = raspi_fixture["raspi_1"] + audio_file_path = "tests/audio1.wav" + with open(audio_file_path, "rb") as audio_file: + files = {"file": ("audio1.wav", audio_file, "multipart/form-data")} + + response = await async_client.post( + f"/v2/raspis/{raspi_1["id"]}", + files=files, + ) + + assert response.status_code == starlette.status.HTTP_200_OK + assert response.headers["content-type"] == "audio/wav" + assert response.content is not None + + +# @pytest.mark.asyncio +# async def test_send_message(async_client, raspi_fixture): +# raspi_1 = raspi_fixture["raspi_1"] +# audio_file_path = "tests/audio1.wav" +# with open(audio_file_path, "rb") as audio_file: +# files = {"file": ("audio1.wav", audio_file, "multipart/form-data")} +# +# response = await async_client.post( +# f"/v2/raspis/{raspi_1["id"]}/messages", +# files=files, +# ) +# +# assert response.status_code == starlette.status.HTTP_200_OK