Files
Orchestrator/privat/NoteGraph/ingestion/tests/conftest.py
ankn a5f8fb49ab Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
2026-06-30 20:39:52 +02:00

84 lines
2.4 KiB
Python

"""Shared test fixtures for the ingestion test suite."""
import pytest
from pathlib import Path
from unittest.mock import MagicMock
from ingestion.config import IngestionConfig
from ingestion.enrichment.models import ActionItem, EnrichmentResult, Entity
@pytest.fixture
def tmp_notes_dir(tmp_path: Path) -> Path:
"""Create a temporary notes directory structure."""
notes = tmp_path / "notes"
notes.mkdir()
(notes / "inbox").mkdir()
(notes / "meetings").mkdir()
(notes / "projects").mkdir()
(notes / "people").mkdir()
(notes / "decisions").mkdir()
return notes
@pytest.fixture
def tmp_inbox(tmp_path: Path) -> Path:
"""Create a temporary inbox directory."""
inbox = tmp_path / "inbox"
inbox.mkdir()
return inbox
@pytest.fixture
def mock_config(tmp_path: Path) -> IngestionConfig:
"""Create a test configuration with temporary paths."""
notes_dir = tmp_path / "notes"
notes_dir.mkdir(exist_ok=True)
inbox_dir = tmp_path / "inbox"
inbox_dir.mkdir(exist_ok=True)
return IngestionConfig(
llm_provider="openai",
llm_model="gpt-4o",
openai_api_key="test-key-fake",
notes_dir=str(notes_dir),
inbox_dir=str(inbox_dir),
auto_commit=False,
)
@pytest.fixture
def sample_enrichment_result() -> EnrichmentResult:
"""Create a sample enrichment result for testing."""
return EnrichmentResult(
title="Meeting with Beier GmbH",
category="meeting",
tags=["meeting", "customer"],
entities=[
Entity(type="person", value="Thomas Beier", confidence=0.95),
Entity(type="project", value="Druckluft", confidence=0.9),
Entity(type="date", value="2024-03-15", confidence=0.99),
],
action_items=[
ActionItem(description="Send updated proposal", assignee="André", deadline="2024-03-22"),
ActionItem(description="Schedule follow-up meeting"),
],
summary="Discussion about the Druckluft project.",
)
@pytest.fixture
def mock_llm_client():
"""Create a mock LLM client that returns a valid enrichment JSON."""
import json
mock = MagicMock()
mock.complete.return_value = json.dumps({
"title": "Test Note",
"category": "inbox",
"tags": ["test"],
"entities": [],
"action_items": [],
"summary": "A test note.",
})
return mock