99 lines
2.9 KiB
Python
99 lines
2.9 KiB
Python
"""
|
|
Unit Tests for NCDService
|
|
Generated test cases for service layer
|
|
"""
|
|
import pytest
|
|
from unittest.mock import Mock, patch
|
|
from src.services._service import NCDService
|
|
from src.errors.error import NotFoundError, ValidationError
|
|
|
|
@pytest.fixture
|
|
def service():
|
|
return NCDService()
|
|
|
|
@pytest.fixture
|
|
def mock_model():
|
|
return Mock()
|
|
|
|
class TestNCDService:
|
|
def test_create_success(self, service, mock_model):
|
|
"""Test successful creation of """
|
|
data = {
|
|
"id": True,
|
|
"ncd_id": "testncd_id",
|
|
"title": "testtitle",
|
|
"coverage_description": True,
|
|
"indications_and_limitations": True,
|
|
"covered_cpt_codes": True,
|
|
"covered_icd10_codes": True,
|
|
"effective_date": True,
|
|
"termination_date": True,
|
|
"last_review_date": True,
|
|
"is_active": True,
|
|
"document_url": "testdocument_url",
|
|
"": True,
|
|
"": True,
|
|
}
|
|
created = {**data, "id": 1}
|
|
|
|
with patch('src.services._service.NCDModel') as mock:
|
|
mock.create.return_value = created
|
|
result = service.create(data)
|
|
|
|
assert result == created
|
|
mock.create.assert_called_once_with(data)
|
|
|
|
def test_create_validation_error(self, service):
|
|
"""Test validation error on invalid data"""
|
|
invalid_data = {}
|
|
|
|
with pytest.raises(ValidationError):
|
|
service.create(invalid_data)
|
|
|
|
def test_find_by_id_success(self, service, mock_model):
|
|
"""Test successful retrieval by id"""
|
|
id = 1
|
|
found = {"id": id, "name": "Test"}
|
|
|
|
with patch('src.services._service.NCDModel') as mock:
|
|
mock.get.return_value = found
|
|
result = service.find_by_id(id)
|
|
|
|
assert result == found
|
|
mock.get.assert_called_once_with(id)
|
|
|
|
def test_find_by_id_not_found(self, service):
|
|
"""Test NotFoundError when not found"""
|
|
id = 999
|
|
|
|
with patch('src.services._service.NCDModel') as mock:
|
|
mock.get.return_value = None
|
|
|
|
with pytest.raises(NotFoundError):
|
|
service.find_by_id(id)
|
|
|
|
def test_update_success(self, service):
|
|
"""Test successful update"""
|
|
id = 1
|
|
update_data = {"name": "Updated"}
|
|
updated = {"id": id, **update_data}
|
|
|
|
with patch('src.services._service.NCDModel') as mock:
|
|
mock.get.return_value = {"id": id}
|
|
mock.update.return_value = updated
|
|
result = service.update(id, update_data)
|
|
|
|
assert result == updated
|
|
|
|
def test_delete_success(self, service):
|
|
"""Test successful deletion"""
|
|
id = 1
|
|
|
|
with patch('src.services._service.NCDModel') as mock:
|
|
mock.get.return_value = {"id": id}
|
|
mock.delete.return_value = True
|
|
service.delete(id)
|
|
|
|
mock.delete.assert_called_once_with(id)
|
|
|