123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- # tests/conftest.py
- import asyncio
- import uuid
- from typing import AsyncGenerator, Generator
- import pytest
- from r2r import R2RAsyncClient, R2RClient
- class TestConfig:
- def __init__(self):
- self.base_url = "http://localhost:7272"
- self.index_wait_time = 1.0
- self.chunk_creation_wait_time = 1.0
- self.superuser_email = "admin@example.com"
- self.superuser_password = "change_me_immediately"
- self.test_timeout = 30 # seconds
- @pytest.fixture # (scope="session")
- def config() -> TestConfig:
- return TestConfig()
- @pytest.fixture(scope="session")
- async def client(config) -> AsyncGenerator[R2RClient, None]:
- """Create a shared client instance for the test session."""
- client = R2RClient(config.base_url)
- yield client
- # Session cleanup if needed
- @pytest.fixture # scope="session")
- def mutable_client(config) -> R2RClient:
- """Create a shared client instance for the test session."""
- client = R2RClient(config.base_url)
- return client # a client for logging in and what-not
- # Session cleanup if needed
- @pytest.fixture # (scope="session")
- async def aclient(config) -> AsyncGenerator[R2RClient, None]:
- """Create a shared client instance for the test session."""
- client = R2RAsyncClient(config.base_url)
- yield client
- # Session cleanup if needed
- @pytest.fixture
- async def superuser_client(
- client: R2RClient, config: TestConfig
- ) -> AsyncGenerator[R2RClient, None]:
- """Creates a superuser client for tests requiring elevated privileges."""
- await client.users.login(config.superuser_email, config.superuser_password)
- yield client
- await client.users.logout()
- import uuid
- import pytest
- from r2r import Message, R2RClient, R2RException, SearchMode
- @pytest.fixture(scope="session")
- def config():
- class TestConfig:
- base_url = "http://localhost:7272"
- superuser_email = "admin@example.com"
- superuser_password = "change_me_immediately"
- return TestConfig()
- @pytest.fixture(scope="session")
- def client(config):
- """Create a client instance and log in as a superuser."""
- client = R2RClient(config.base_url)
- client.users.login(config.superuser_email, config.superuser_password)
- return client
- @pytest.fixture(scope="session")
- def test_document(client):
- """Create and yield a test document, then clean up."""
- random_suffix = str(uuid.uuid4())
- doc_resp = client.documents.create(
- raw_text=f"{random_suffix} Test doc for collections",
- run_with_orchestration=False,
- )
- doc_id = doc_resp["results"]["document_id"]
- yield doc_id
- # Cleanup: Try deleting the document if it still exists
- try:
- client.documents.delete(id=doc_id)
- except R2RException:
- pass
- @pytest.fixture(scope="session")
- def test_collection(client, test_document):
- """Create a test collection with sample documents."""
- collection_name = f"Test Collection {uuid.uuid4()}"
- collection_id = client.collections.create(name=collection_name)["results"][
- "id"
- ]
- docs = [
- {
- "text": f"Aristotle was a Greek philosopher who studied under Plato {str(uuid.uuid4())}.",
- "metadata": {
- "rating": 5,
- "tags": ["philosophy", "greek"],
- "category": "ancient",
- },
- },
- {
- "text": f"Socrates is considered a founder of Western philosophy {str(uuid.uuid4())}.",
- "metadata": {
- "rating": 3,
- "tags": ["philosophy", "classical"],
- "category": "ancient",
- },
- },
- {
- "text": f"Rene Descartes was a French philosopher. unique_philosopher {str(uuid.uuid4())}",
- "metadata": {
- "rating": 8,
- "tags": ["rationalism", "french"],
- "category": "modern",
- },
- },
- {
- "text": f"Immanuel Kant, a German philosopher, influenced Enlightenment thought {str(uuid.uuid4())}.",
- "metadata": {
- "rating": 7,
- "tags": ["enlightenment", "german"],
- "category": "modern",
- },
- },
- ]
- doc_ids = []
- for doc in docs:
- result = client.documents.create(
- raw_text=doc["text"], metadata=doc["metadata"]
- )["results"]
- doc_id = result["document_id"]
- doc_ids.append(doc_id)
- client.collections.add_document(collection_id, doc_id)
- client.collections.add_document(collection_id, test_document)
- return {"collection_id": collection_id, "document_ids": doc_ids}
|