add set of unit tests

This commit is contained in:
grillazz
2021-03-28 17:12:35 +02:00
parent 8f7e264fd1
commit 15aed1bd71
5 changed files with 102 additions and 9 deletions

View File

@@ -1,3 +1,4 @@
from uuid import UUID
import pytest
from fastapi import status
from httpx import AsyncClient
@@ -6,5 +7,92 @@ from httpx import AsyncClient
pytestmark = pytest.mark.asyncio
async def test_add_stuff(client: AsyncClient):
assert True
@pytest.mark.parametrize(
"payload, status_code",
(
(
{
"name": "motorhead",
"description": "we play rock and roll"
},
status.HTTP_201_CREATED,
),
),
)
async def test_add_configuration(client: AsyncClient, payload: dict, status_code: int):
response = await client.post("/v1/", json=payload)
assert response.status_code == status_code
assert payload["name"] == response.json()["name"]
@pytest.mark.parametrize(
"payload, status_code",
(
(
{
"name": "motorhead",
"description": "we play rock and roll"
},
status.HTTP_200_OK,
),
),
)
async def test_get_configuration(client: AsyncClient, payload: dict, status_code: int):
await client.post("/v1/", json=payload)
name = payload["name"]
response = await client.get(f"/v1/?name={name}")
assert response.status_code == status_code
assert payload["name"] == response.json()["name"]
assert UUID(response.json()["id"])
@pytest.mark.parametrize(
"payload, status_code",
(
(
{
"name": "motorhead",
"description": "we play rock and roll"
},
status.HTTP_200_OK,
),
),
)
async def test_delete_configuration(client: AsyncClient, payload: dict, status_code: int):
response = await client.post("/v1/", json=payload)
stuff_id = response.json()["id"]
response = await client.delete(f"/v1/?stuff_id={stuff_id}")
assert response.status_code == status_code
@pytest.mark.parametrize(
"payload, status_code",
(
(
{
"name": "motorhead",
"description": "we play rock and roll"
},
status.HTTP_200_OK,
),
),
)
@pytest.mark.parametrize(
"patch_payload, patch_status_code",
(
(
{
"name": "motorhead",
"description": "we play loud"
},
status.HTTP_200_OK,
),
),
)
async def test_update_configuration(client: AsyncClient, payload: dict, status_code: int, patch_payload: dict, patch_status_code: int):
await client.post("/v1/", json=payload)
name = payload["name"]
response = await client.patch(f"/v1/?name={name}", json=patch_payload)
assert response.status_code == patch_status_code
response = await client.get(f"/v1/?name={name}")
assert patch_payload["description"] == response.json()["description"]

View File

@@ -8,12 +8,14 @@ from sqlalchemy.exc import SQLAlchemyError
from the_app.main import app
from the_app import config
from the_app.database import get_db, engine
from the_app.database import get_db
from the_app.models.base import Base
from sqlalchemy.pool import NullPool
global_settings = config.get_settings()
url = global_settings.asyncpg_test_url
engine = create_async_engine(url)
engine = create_async_engine(url, poolclass=NullPool)
async_session = sessionmaker(engine, expire_on_commit=False, class_=AsyncSession)