"""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.mongo.company_mongo_service import ( CompanyMongoService, ) @pytest.fixture() def mock_mongo_connector(mocker: Mock) -> Mock: """Mock MongoConnector class. Args: mocker (any): Library mocker Returns: Mock: Mocked MongoConnector """ mock = Mock() mocker.patch( "aki_prj23_transparenzregister.utils.mongo.connector.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, mock_collection: Mock) -> None: """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, mock_collection: Mock) -> None: """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, mock_collection: Mock) -> None: """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 # type: ignore def test_by_id_result(mock_mongo_connector: Mock, mock_collection: Mock) -> None: """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 # type: ignore def test_insert(mock_mongo_connector: Mock, mock_collection: Mock) -> None: """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 # type: ignore