mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-04-22 22:12:53 +02:00
104 lines
3.1 KiB
Python
104 lines
3.1 KiB
Python
"""Test utils.company_mongo_service."""
|
|
from unittest.mock import Mock
|
|
|
|
import pytest
|
|
|
|
from aki_prj23_transparenzregister.models.company import Company
|
|
from aki_prj23_transparenzregister.utils.company_mongo_service import (
|
|
CompanyMongoService,
|
|
)
|
|
|
|
|
|
@pytest.fixture()
|
|
def mock_mongo_connector(mocker) -> Mock:
|
|
"""Mock MongoConnector class.
|
|
|
|
Args:
|
|
mocker (any): Library mocker
|
|
|
|
Returns:
|
|
Mock: Mocked MongoConnector
|
|
"""
|
|
mock = Mock()
|
|
mocker.patch(
|
|
"aki_prj23_transparenzregister.utils.mongo.MongoConnector", return_value=mock
|
|
)
|
|
return mock
|
|
|
|
|
|
@pytest.fixture()
|
|
def mock_collection() -> Mock:
|
|
"""Mock mongo collection.
|
|
|
|
Returns:
|
|
Mock: Mock object
|
|
"""
|
|
return Mock()
|
|
|
|
|
|
def test_init(mock_mongo_connector, mock_collection):
|
|
"""Test CompanyMongoService constructor.
|
|
|
|
Args:
|
|
mock_mongo_connector (Mock): Mocked MongoConnector library
|
|
mock_collection (Mock): Mocked pymongo collection
|
|
"""
|
|
mock_mongo_connector.database = {"companies": mock_collection}
|
|
service = CompanyMongoService(mock_mongo_connector)
|
|
assert service.collection == mock_collection
|
|
|
|
|
|
def test_get_all(mock_mongo_connector, mock_collection):
|
|
"""Test CompanyMongoService get_all method.
|
|
|
|
Args:
|
|
mock_mongo_connector (Mock): Mocked MongoConnector library
|
|
mock_collection (Mock): Mocked pymongo collection
|
|
"""
|
|
mock_mongo_connector.database = {"companies": mock_collection}
|
|
service = CompanyMongoService(mock_mongo_connector)
|
|
mock_result = [{"id": "42"}]
|
|
mock_collection.find.return_value = mock_result
|
|
assert service.get_all() == mock_result
|
|
|
|
|
|
def test_by_id_no_result(mock_mongo_connector, mock_collection):
|
|
"""Test CompanyMongoService get_by_id with no result.
|
|
|
|
Args:
|
|
mock_mongo_connector (Mock): Mocked MongoConnector library
|
|
mock_collection (Mock): Mocked pymongo collection
|
|
"""
|
|
mock_mongo_connector.database = {"companies": mock_collection}
|
|
service = CompanyMongoService(mock_mongo_connector)
|
|
mock_collection.find.return_value = []
|
|
assert service.get_by_id("Does not exist") is None
|
|
|
|
|
|
def test_by_id_result(mock_mongo_connector, mock_collection):
|
|
"""Test CompanyMongoService get_by_id with result.
|
|
|
|
Args:
|
|
mock_mongo_connector (Mock): Mocked MongoConnector library
|
|
mock_collection (Mock): Mocked pymongo collection
|
|
"""
|
|
mock_mongo_connector.database = {"companies": mock_collection}
|
|
service = CompanyMongoService(mock_mongo_connector)
|
|
mock_entry = {"id": "Does exist", "vaue": 42}
|
|
mock_collection.find.return_value = [mock_entry]
|
|
assert service.get_by_id("Does exist") == mock_entry
|
|
|
|
|
|
def test_insert(mock_mongo_connector, mock_collection):
|
|
"""Test CompanyMongoService insert method.
|
|
|
|
Args:
|
|
mock_mongo_connector (Mock): Mocked MongoConnector library
|
|
mock_collection (Mock): Mocked pymongo collection
|
|
"""
|
|
mock_mongo_connector.database = {"companies": mock_collection}
|
|
service = CompanyMongoService(mock_mongo_connector)
|
|
mock_result = 42
|
|
mock_collection.insert_one.return_value = mock_result
|
|
assert service.insert(Company(None, None, "", "", [])) == mock_result
|