You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
motief/tests/conftest.py

63 lines
1.7 KiB

import tempfile
import pytest
# Load test fixtures from the utils package so pytest can discover them.
pytest_plugins = ["tests.utils.migration_fixtures"]
@pytest.fixture
def tmp_duckdb_path(tmp_path):
p = tmp_path / "test.db"
return str(p)
@pytest.fixture
def tmp_duckdb_conn(tmp_duckdb_path):
# Import duckdb lazily so running pytest doesn't fail on machines
# where duckdb is not installed (CI / contributor machines that don't
# need the duckdb-based fixtures). If duckdb is missing, skip this
# fixture at runtime when it's requested.
try:
import duckdb
except Exception:
pytest.skip("duckdb not installed, skipping duckdb fixtures")
conn = duckdb.connect(database=tmp_duckdb_path)
yield conn
try:
conn.close()
except Exception:
pass
@pytest.fixture
def monkeypatch_ai_provider(monkeypatch):
"""Patch ai_provider.get_embedding to return deterministic 16-dim vector."""
import ai_provider
fake = [0.01] * 16
monkeypatch.setattr(ai_provider, "get_embedding", lambda text, model=None: fake)
return fake
@pytest.fixture
def mock_odata_client(monkeypatch):
"""
Patch requests.Session.get for OData calls.
Returns a configurable mock — set mock_odata_client.response to override.
"""
import requests
from unittest.mock import MagicMock
mock_response = MagicMock()
mock_response.raise_for_status.return_value = None
mock_response.json.return_value = {"value": []}
class MockSession:
response = mock_response
def get(self, *args, **kwargs):
return self.response
monkeypatch.setattr(requests, "Session", MockSession)
return mock_response