File size: 1,458 Bytes
f27b882
c90ac2d
 
efa5c7c
2ef7f43
f27b882
 
 
 
 
adea8c3
 
 
f27b882
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
adea8c3
f27b882
 
 
 
 
 
 
 
 
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import pytest
import os
os.environ["TESTING"] = "true"
os.environ["APP_ENV"] = "test"
os.environ["HF_TOKEN"] = "mock-token"
from fastapi.testclient import TestClient
from sqlmodel import SQLModel, Session, create_engine
from sqlmodel.pool import StaticPool

from app import app
from codelens_env.database import get_session
from codelens_env.env import CodeLensEnv
from codelens_env.models import TaskId, Action, ActionType, Severity, Category, Verdict

@pytest.fixture(name="session")
def session_fixture():
    """In-memory SQLite session for tests."""
    engine = create_engine(
        "sqlite://",
        connect_args={"check_same_thread": False},
        poolclass=StaticPool,
    )
    SQLModel.metadata.create_all(engine)
    with Session(engine) as session:
        yield session

@pytest.fixture(name="client")
def client_fixture(session):
    """TestClient with DB dependency override."""
    def get_session_override():
        yield session
    app.dependency_overrides[get_session] = get_session_override
    client = TestClient(app)
    yield client
    app.dependency_overrides.clear()

@pytest.fixture
def env():
    return CodeLensEnv()

@pytest.fixture
def approve_action():
    return Action(action_type=ActionType.APPROVE, body="LGTM", verdict=Verdict.LGTM)

@pytest.fixture
def request_changes_action():
    return Action(action_type=ActionType.REQUEST_CHANGES, body="Issues found",
                  verdict=Verdict.REQUEST_CHANGES)