Files
NaliiaBotMCP/tests/test_customer.py
aserrador 861f5030f4 refactor: add service layer architecture with Pydantic validation
- Add services layer (PartyService, ScheduleService, ProductService, ServiceCenterService)
- Add ServiceProvider for dependency injection
- Add Pydantic input validation on all MCP tools
- Add thread-safety to TrytonSettings with double-checked locking
- Update tests to mock ServiceProvider instead of direct client calls
- Add pydantic dependency
2026-03-14 22:12:33 -05:00

62 lines
1.6 KiB
Python

import pytest
import pytest_asyncio
from unittest.mock import MagicMock, patch
import json
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent / "src"))
@pytest.fixture
def mock_client():
return MagicMock()
@pytest.fixture
def mock_service_provider(mock_client):
provider_mock = MagicMock()
mock_response = MagicMock()
mock_response.is_error = False
mock_response.data = []
provider_mock.party.find_by_identifier.return_value = mock_response
provider_mock.party.create.return_value = mock_response
return provider_mock
@pytest.fixture
def server_with_mocks(mock_service_provider):
with patch("tryton_mcp.server._service_provider", mock_service_provider):
yield mock_service_provider
@pytest.mark.asyncio
class TestParty:
async def test_create_new_customer(self, server_with_mocks):
from tryton_mcp.server import create_customer
server_with_mocks.party.create.return_value.data = [1]
result = create_customer(
name="Alejandro Zapata",
identifiers=[["create", [{"type": "mobile", "code": "310659595"}]]],
)
assert result == [1]
async def test_find_customer(self, server_with_mocks):
from tryton_mcp.server import find_customer_by_identifier
expected_return = [
{"id": 19, "party": 44, "party.": {"name": "Alejandro Zapata", "id": 44}}
]
server_with_mocks.party.find_by_identifier.return_value.data = expected_return
result = find_customer_by_identifier("310659595")
assert result == expected_return