jira-webhook-llm/tests/conftest.py
Ireneusz Bachanowicz 935a8a49ae
Some checks are pending
CI/CD Pipeline / test (push) Waiting to run
Almost stable tests
2025-07-17 02:21:56 +02:00

86 lines
2.6 KiB
Python

import pytest
from fastapi.testclient import TestClient
from jira_webhook_llm import create_app, app # Assuming app is created via factory
from database.database import engine, Base # Add import
from sqlalchemy.orm import sessionmaker
import os
from sqlalchemy import create_engine
@pytest.fixture(scope="function")
def setup_db(monkeypatch):
# Use in-memory SQLite for tests
test_db_url = "sqlite:///:memory:"
monkeypatch.setenv("DATABASE_URL", test_db_url)
from database import database as db
from database.models import Base # Import Base from models
test_engine = create_engine(test_db_url, connect_args={"check_same_thread": False})
# Update the global engine and SessionLocal
db.engine = test_engine
db.SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=test_engine)
# Create all tables
Base.metadata.create_all(bind=test_engine)
yield test_engine
# Cleanup
Base.metadata.drop_all(bind=test_engine)
@pytest.fixture
def mock_full_jira_payload(setup_db):
mock_data = {
"issueKey": "PROJ-123",
"projectKey": "PROJ",
"summary": "Test Issue",
"description": "Test Description",
"comment": "Test Comment",
"labels": ["test"],
"status": "open",
"assignee": "Tester",
"updated": "2025-07-13T12:00:00Z",
"payloadData": {"key1": "value1"}
}
return mock_data
@pytest.fixture
def test_client(setup_db):
# Ensure the database is set up before creating the app
test_engine = setup_db
# Import and patch the database module to use test database
from database import database as db
db.engine = test_engine
db.SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=test_engine)
# Create fresh app instance with test DB
from jira_webhook_llm import create_app
app = create_app()
return TestClient(app)
@pytest.fixture
def mock_jira_payload():
return {
"projectKey": "TEST-PROJECT",
"issueKey": "TEST-123",
"summary": "Test Issue",
"description": "Test Description",
"comment": "Test Comment",
"labels": ["test"],
"status": "Open",
"assignee": "Tester",
"updated": "2025-07-13T12:00:00Z"
}
# return {
# "issueKey": "TEST-123",
# "summary": "Test Issue",
# "description": "Test Description",
# "comment": "Test Comment",
# "labels": ["test"],
# "status": "Open",
# "assignee": "Tester",
# "updated": "2025-07-13T12:00:00Z"
# }