"""Test utils.company_mongo_service.""" from unittest.mock import Mock import pytest from aki_prj23_transparenzregister.models.company import Company, CompanyID, Location 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 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 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(CompanyID("", ""), Location("Hier und Dort"), "", "", []) # type: ignore ) == mock_result ) def test_get_by_object_id_no_result( mock_mongo_connector: Mock, mock_collection: Mock ) -> None: mock_mongo_connector.database = {"companies": mock_collection} service = CompanyMongoService(mock_mongo_connector) mock_result: list = [] mock_collection.find.return_value = mock_result assert service.get_by_object_id("649f16a1e198338c3b44299e") is None def test_get_by_object_id(mock_mongo_connector: Mock, mock_collection: Mock) -> None: mock_mongo_connector.database = {"companies": mock_collection} service = CompanyMongoService(mock_mongo_connector) mock_result: list = [{"_id": "abc", "brille?": "Fielmann", "Hotel?": "Trivago"}] mock_collection.find.return_value = mock_result assert service.get_by_object_id("612316a1e198338c3b44299e") == mock_result[0] def test_get_where_financial_no_results( mock_mongo_connector: Mock, mock_collection: Mock ) -> None: mock_mongo_connector.database = {"companies": mock_collection} service = CompanyMongoService(mock_mongo_connector) mock_result: list = [{"_id": "abc", "brille?": "Fielmann", "Hotel?": "Trivago"}] mock_collection.find.return_value = mock_result assert service.get_where_no_financial_results() == mock_result def test_get_where_financial_results( mock_mongo_connector: Mock, mock_collection: Mock ) -> None: mock_mongo_connector.database = {"companies": mock_collection} service = CompanyMongoService(mock_mongo_connector) mock_result: list = [{"_id": "abc", "brille?": "Fielmann", "Hotel?": "Trivago"}] mock_collection.find.return_value = mock_result assert service.get_where_yearly_results() == mock_result def test_add_yearly_reslults(mock_mongo_connector: Mock, mock_collection: Mock) -> None: mock_mongo_connector.database = {"companies": mock_collection} service = CompanyMongoService(mock_mongo_connector) mock_result: list = [{"_id": "abc", "brille?": "Fielmann", "Hotel?": "Trivago"}] mock_collection.update_one.return_value = mock_result assert service.add_yearly_results("612316a1e198338c3b44299e", {}) == mock_result