Misc improvements
This commit is contained in:
@@ -8,6 +8,11 @@ from capa_de_integracion.models import ConversationRequest, DetectIntentResponse
|
||||
from capa_de_integracion.models.notification import ExternalNotificationRequest
|
||||
from capa_de_integracion.models.quick_replies import QuickReplyScreen
|
||||
from capa_de_integracion.routers import conversation, notification, quick_replies
|
||||
from capa_de_integracion.routers.quick_replies import (
|
||||
QuickReplyScreenRequest,
|
||||
QuickReplyUser,
|
||||
)
|
||||
from capa_de_integracion.services.quick_reply.session import QuickReplySessionResponse
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -136,3 +141,79 @@ async def test_process_notification_general_error():
|
||||
await notification.process_notification(request, mock_manager)
|
||||
|
||||
assert exc_info.value.status_code == 500
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_start_quick_reply_session_success():
|
||||
"""Test quick reply session endpoint with success."""
|
||||
mock_service = Mock()
|
||||
mock_result = QuickReplySessionResponse(
|
||||
session_id="test-session-123",
|
||||
quick_replies=QuickReplyScreen(
|
||||
header="Test Header",
|
||||
body=None,
|
||||
button=None,
|
||||
header_section=None,
|
||||
preguntas=[],
|
||||
),
|
||||
)
|
||||
mock_service.start_quick_reply_session = AsyncMock(return_value=mock_result)
|
||||
|
||||
request = QuickReplyScreenRequest(
|
||||
usuario=QuickReplyUser(telefono="555-1234", nombre="John"),
|
||||
pantallaContexto="home",
|
||||
)
|
||||
|
||||
response = await quick_replies.start_quick_reply_session(request, mock_service)
|
||||
|
||||
assert response.response_id == "test-session-123"
|
||||
assert response.quick_replies.header == "Test Header"
|
||||
mock_service.start_quick_reply_session.assert_called_once_with(
|
||||
telefono="555-1234",
|
||||
_nombre="John",
|
||||
pantalla_contexto="home",
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_start_quick_reply_session_value_error():
|
||||
"""Test quick reply session with ValueError."""
|
||||
mock_service = Mock()
|
||||
mock_service.start_quick_reply_session = AsyncMock(
|
||||
side_effect=ValueError("Invalid screen"),
|
||||
)
|
||||
|
||||
request = QuickReplyScreenRequest(
|
||||
usuario=QuickReplyUser(telefono="555-1234", nombre="John"),
|
||||
pantallaContexto="invalid",
|
||||
)
|
||||
|
||||
from fastapi import HTTPException
|
||||
|
||||
with pytest.raises(HTTPException) as exc_info:
|
||||
await quick_replies.start_quick_reply_session(request, mock_service)
|
||||
|
||||
assert exc_info.value.status_code == 400
|
||||
assert "Invalid screen" in str(exc_info.value.detail)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_start_quick_reply_session_general_error():
|
||||
"""Test quick reply session with general Exception."""
|
||||
mock_service = Mock()
|
||||
mock_service.start_quick_reply_session = AsyncMock(
|
||||
side_effect=RuntimeError("Database error"),
|
||||
)
|
||||
|
||||
request = QuickReplyScreenRequest(
|
||||
usuario=QuickReplyUser(telefono="555-1234", nombre="John"),
|
||||
pantallaContexto="home",
|
||||
)
|
||||
|
||||
from fastapi import HTTPException
|
||||
|
||||
with pytest.raises(HTTPException) as exc_info:
|
||||
await quick_replies.start_quick_reply_session(request, mock_service)
|
||||
|
||||
assert exc_info.value.status_code == 500
|
||||
assert "Internal server error" in str(exc_info.value.detail)
|
||||
|
||||
Reference in New Issue
Block a user