File: test_sqlalchemy_examples.py

package info (click to toggle)
litestar 2.21.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,568 kB
  • sloc: python: 70,588; makefile: 254; javascript: 104; sh: 60
file content (32 lines) | stat: -rw-r--r-- 1,322 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from pathlib import Path

import pytest
from pytest import MonkeyPatch
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy.pool import NullPool

from litestar.plugins.sqlalchemy import AsyncSessionConfig, SQLAlchemyAsyncConfig
from litestar.testing import TestClient

pytestmark = pytest.mark.xdist_group("sqlalchemy_examples")


async def test_sqlalchemy_declarative_models(tmp_path: Path, monkeypatch: MonkeyPatch) -> None:
    engine = create_async_engine("sqlite+aiosqlite:///test.sqlite", poolclass=NullPool)

    session_config = AsyncSessionConfig(expire_on_commit=False)
    sqlalchemy_config = SQLAlchemyAsyncConfig(
        session_config=session_config,
        create_all=True,
        engine_instance=engine,
    )  # Create 'async_session' dependency.
    from docs.examples.contrib.sqlalchemy import sqlalchemy_declarative_models

    monkeypatch.setattr(sqlalchemy_declarative_models, "sqlalchemy_config", sqlalchemy_config)
    async with engine.begin() as connection:
        await connection.run_sync(sqlalchemy_declarative_models.Author.metadata.create_all)
        await connection.commit()
    with TestClient(sqlalchemy_declarative_models.app) as client:
        response = client.get("/authors")
        assert response.status_code == 200
        assert len(response.json()) > 0