memory evolution phase 1
This commit is contained in:
@@ -12,13 +12,14 @@ from __future__ import annotations
|
||||
|
||||
import json
|
||||
import uuid
|
||||
from unittest.mock import patch
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
import pytest
|
||||
import pytest_asyncio
|
||||
from cryptography.fernet import Fernet
|
||||
from sqlalchemy import select
|
||||
|
||||
from app.core.embeddings import embed_text
|
||||
from app.core.memory_middleware import MemoryMiddleware
|
||||
from app.db import get_session
|
||||
from app.main import app
|
||||
@@ -341,3 +342,33 @@ def test_home_request_calls_memory_middleware(client):
|
||||
stored_session_id, stored_message = store_calls[0][1], store_calls[0][2]
|
||||
assert stored_session_id == session_id
|
||||
assert stored_message == "Show tasks"
|
||||
|
||||
|
||||
# ── embed_text ─────────────────────────────────────────────────────────────────
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_embed_text_returns_1536_floats():
|
||||
"""embed_text returns a 1536-dim float list when OpenAI responds successfully."""
|
||||
fake_embedding = [0.1] * 1536
|
||||
|
||||
mock_response = MagicMock()
|
||||
mock_response.data = [MagicMock(embedding=fake_embedding)]
|
||||
|
||||
mock_client = MagicMock()
|
||||
mock_client.embeddings.create = AsyncMock(return_value=mock_response)
|
||||
|
||||
with patch("app.core.embeddings.AsyncOpenAI", return_value=mock_client):
|
||||
result = await embed_text("test text")
|
||||
|
||||
assert result is not None
|
||||
assert len(result) == 1536
|
||||
assert all(isinstance(x, float) for x in result)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_embed_text_returns_none_on_failure():
|
||||
"""embed_text returns None when OpenAI raises; must not propagate the exception."""
|
||||
with patch("app.core.embeddings.AsyncOpenAI", side_effect=Exception("no key")):
|
||||
result = await embed_text("test text")
|
||||
|
||||
assert result is None
|
||||
|
||||
Reference in New Issue
Block a user