Add tests

This commit is contained in:
Sebastián Ramírez
2021-08-24 15:15:26 +02:00
parent 362f2e2e17
commit 79089f7a6c
114 changed files with 6742 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
import importlib
from typing import Any, Dict, List, Union
from unittest.mock import patch
from sqlalchemy import inspect
from sqlalchemy.engine.reflection import Inspector
from sqlmodel import create_engine
from fastapi.testclient import TestClient
from sqlmodel.pool import StaticPool
from docs_src.tutorial.fastapi.app_testing.tutorial001 import test_main_001 as test_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001 import main as app_mod
import pytest
@pytest.fixture(name="prepare", autouse=True)
def prepare_fixture(clear_sqlmodel):
# Trigger side effects of registering table models in SQLModel
# This has to be called after clear_sqlmodel
importlib.reload(app_mod)
importlib.reload(test_mod)
def test_tutorial():
test_mod.test_create_hero()

View File

@@ -0,0 +1,24 @@
import importlib
from typing import Any, Dict, List, Union
from unittest.mock import patch
from sqlalchemy import inspect
from sqlalchemy.engine.reflection import Inspector
from sqlmodel import create_engine
from fastapi.testclient import TestClient
from sqlmodel.pool import StaticPool
from docs_src.tutorial.fastapi.app_testing.tutorial001 import test_main_002 as test_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001 import main as app_mod
import pytest
@pytest.fixture(name="prepare", autouse=True)
def prepare_fixture(clear_sqlmodel):
# Trigger side effects of registering table models in SQLModel
# This has to be called after clear_sqlmodel
importlib.reload(app_mod)
importlib.reload(test_mod)
def test_tutorial():
test_mod.test_create_hero()

View File

@@ -0,0 +1,24 @@
import importlib
from typing import Any, Dict, List, Union
from unittest.mock import patch
from sqlalchemy import inspect
from sqlalchemy.engine.reflection import Inspector
from sqlmodel import create_engine
from fastapi.testclient import TestClient
from sqlmodel.pool import StaticPool
from docs_src.tutorial.fastapi.app_testing.tutorial001 import test_main_003 as test_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001 import main as app_mod
import pytest
@pytest.fixture(name="prepare", autouse=True)
def prepare_fixture(clear_sqlmodel):
# Trigger side effects of registering table models in SQLModel
# This has to be called after clear_sqlmodel
importlib.reload(app_mod)
importlib.reload(test_mod)
def test_tutorial():
test_mod.test_create_hero()

View File

@@ -0,0 +1,24 @@
import importlib
from typing import Any, Dict, List, Union
from unittest.mock import patch
from sqlalchemy import inspect
from sqlalchemy.engine.reflection import Inspector
from sqlmodel import create_engine
from fastapi.testclient import TestClient
from sqlmodel.pool import StaticPool
from docs_src.tutorial.fastapi.app_testing.tutorial001 import test_main_004 as test_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001 import main as app_mod
import pytest
@pytest.fixture(name="prepare", autouse=True)
def prepare_fixture(clear_sqlmodel):
# Trigger side effects of registering table models in SQLModel
# This has to be called after clear_sqlmodel
importlib.reload(app_mod)
importlib.reload(test_mod)
def test_tutorial():
test_mod.test_create_hero()

View File

@@ -0,0 +1,31 @@
import importlib
from contextlib import contextmanager
from typing import Any, Dict, List, Union
from unittest.mock import patch
import pytest
from docs_src.tutorial.fastapi.app_testing.tutorial001 import main as app_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001 import test_main_005 as test_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001.test_main_005 import (
session_fixture,
)
from fastapi.testclient import TestClient
from sqlalchemy import inspect
from sqlalchemy.engine.reflection import Inspector
from sqlmodel import Session, create_engine
from sqlmodel.pool import StaticPool
assert session_fixture, "This keeps the session fixture used below"
@pytest.fixture(name="prepare")
def prepare_fixture(clear_sqlmodel):
# Trigger side effects of registering table models in SQLModel
# This has to be called after clear_sqlmodel, but before the session_fixture
# That's why the extra custom fixture here
importlib.reload(app_mod)
def test_tutorial(prepare, session: Session):
test_mod.test_create_hero(session)

View File

@@ -0,0 +1,34 @@
import importlib
from contextlib import contextmanager
from typing import Any, Dict, List, Union
from unittest.mock import patch
import pytest
from docs_src.tutorial.fastapi.app_testing.tutorial001 import main as app_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001 import test_main_006 as test_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001.test_main_006 import (
session_fixture,
client_fixture
)
from fastapi.testclient import TestClient
from sqlalchemy import inspect
from sqlalchemy.engine.reflection import Inspector
from sqlmodel import Session, create_engine
from sqlmodel.pool import StaticPool
assert session_fixture, "This keeps the session fixture used below"
assert client_fixture, "This keeps the client fixture used below"
@pytest.fixture(name="prepare")
def prepare_fixture(clear_sqlmodel):
# Trigger side effects of registering table models in SQLModel
# This has to be called after clear_sqlmodel, but before the session_fixture
# That's why the extra custom fixture here
importlib.reload(app_mod)
def test_tutorial(prepare, session: Session, client: TestClient):
test_mod.test_create_hero(client)

View File

@@ -0,0 +1,87 @@
import importlib
from contextlib import contextmanager
from typing import Any, Dict, List, Union
from unittest.mock import patch
import pytest
from docs_src.tutorial.fastapi.app_testing.tutorial001 import main as app_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001 import test_main as test_mod
from docs_src.tutorial.fastapi.app_testing.tutorial001.test_main import (
session_fixture,
client_fixture,
)
from fastapi.testclient import TestClient
from sqlalchemy import inspect
from sqlalchemy.engine.reflection import Inspector
from sqlmodel import Session, create_engine
from sqlmodel.pool import StaticPool
assert session_fixture, "This keeps the session fixture used below"
assert client_fixture, "This keeps the client fixture used below"
@pytest.fixture(name="prepare", autouse=True)
def prepare_fixture(clear_sqlmodel):
# Trigger side effects of registering table models in SQLModel
# This has to be called after clear_sqlmodel, but before the session_fixture
# That's why the extra custom fixture here
importlib.reload(app_mod)
importlib.reload(test_mod)
def test_create_hero(session: Session, client: TestClient):
test_mod.test_create_hero(client)
def test_create_hero_incomplete(session: Session, client: TestClient):
test_mod.test_create_hero_incomplete(client)
def test_create_hero_invalid(session: Session, client: TestClient):
test_mod.test_create_hero_invalid(client)
def test_read_heroes(session: Session, client: TestClient):
test_mod.test_read_heroes(session=session, client=client)
def test_read_hero(session: Session, client: TestClient):
test_mod.test_read_hero(session=session, client=client)
def test_update_hero(session: Session, client: TestClient):
test_mod.test_update_hero(session=session, client=client)
def test_delete_hero(session: Session, client: TestClient):
test_mod.test_delete_hero(session=session, client=client)
def test_startup():
app_mod.engine = create_engine("sqlite://")
app_mod.on_startup()
insp: Inspector = inspect(app_mod.engine)
assert insp.has_table(str(app_mod.Hero.__tablename__))
def test_get_session():
app_mod.engine = create_engine("sqlite://")
for session in app_mod.get_session():
assert isinstance(session, Session)
assert session.bind == app_mod.engine
def test_read_hero_not_found(client: TestClient):
response = client.get("/heroes/9000")
assert response.status_code == 404
def test_update_hero_not_found(client: TestClient):
response = client.patch("/heroes/9000", json={"name": "Very-Rusty-Man"})
assert response.status_code == 404
def test_delete_hero_not_found(client: TestClient):
response = client.delete("/heroes/9000")
assert response.status_code == 404