File size: 1,366 Bytes
94f31ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Tests for Pinecone seeding script."""

from unittest.mock import AsyncMock, MagicMock, patch

import pytest

import scripts.seed_rag_data as seed_rag_data


@pytest.mark.asyncio
@patch("scripts.seed_rag_data.get_rag_service")
async def test_seed_collection_uses_rag_service_add_documents(
    mock_get_rag_service,
    tmp_path,
) -> None:
    role_dir = tmp_path / "product_owner"
    role_dir.mkdir(parents=True, exist_ok=True)
    (role_dir / "role_playbook.txt").write_text(
        "Define PRD scope and acceptance criteria.",
        encoding="utf-8",
    )

    mock_rag = MagicMock()
    mock_rag.is_pinecone_available.return_value = True
    mock_rag.add_documents = AsyncMock(return_value=["doc-1", "doc-2"])
    mock_get_rag_service.return_value = mock_rag

    with patch.object(seed_rag_data, "CORPUS_DIR", tmp_path):
        result = await seed_rag_data.seed_collection(
            role_name="product_owner",
            directory_name="product_owner",
            dry_run=False,
        )

    assert result["chunks_found"] > 0
    assert result["chunks_inserted"] == 2


def test_main_returns_error_without_pinecone_env(monkeypatch) -> None:
    monkeypatch.delenv("PINECONE_API_KEY", raising=False)
    monkeypatch.delenv("PINECONE_INDEX", raising=False)
    exit_code = seed_rag_data.main(["--role", "product_owner"])
    assert exit_code == 1