from unittest.mock import Mock import pandas as pd import pytest from aki_prj23_transparenzregister.models.company import FinancialKPIEnum from aki_prj23_transparenzregister.utils.data_extraction.bundesanzeiger import ( Bundesanzeiger, ) @pytest.fixture() def mock_bundesanzeiger(mocker: Mock) -> Mock: mock = Mock() mocker.patch( "deutschland.bundesanzeiger", return_value=mock, ) return mock def test_extract_auditor_company_no_hits() -> None: input_data = """ Nothing to see here """ ba = Bundesanzeiger() result = ba.extract_auditor_company(input_data) assert result is None def test_extract_auditor_company() -> None: company_name = "Korrupte Wirtschaftsprüfer GmbH & Co. KG" input_data = f""" {company_name}
Max Mustermann
""" ba = Bundesanzeiger() result = ba.extract_auditor_company(input_data) assert result == company_name def test_extract_kpis() -> None: input_data = """ Die Prj23_Transparenzregister GmbH erwirtschaftete einen Jahresüberschuss 10.000,43 €. Des Weiteren sanken die Gesamtverbindlichkeiten 42,00 € """ ba = Bundesanzeiger() result = ba.__extract_kpis__(input_data) net_income = 10000.43 liabilities = 42.00 assert result[FinancialKPIEnum.NET_INCOME.value] == net_income assert result[FinancialKPIEnum.LIABILITIES.value] == liabilities def test_extracct_financial_results() -> None: input_data = """
Die Prj23_Transparenzregister GmbH erwirtschaftete einen Jahresüberschuss 10.000,43 €.

Dies ist ein Platzhalter, der ignoriert werden soll

Des Weiteren sanken die Gesamtverbindlichkeiten 42,00 € """ ba = Bundesanzeiger() result = ba.extract_financial_results(input_data) net_income = 10000.43 liabilities = 42.00 assert result[FinancialKPIEnum.NET_INCOME.value] == net_income assert result[FinancialKPIEnum.LIABILITIES.value] == liabilities def test_filter_reports() -> None: test_data = [ {"name": "Bedienungsanleitung", "report": ""}, {"name": "Jahresabschluss 1998", "report": ""}, ] test_df = pd.DataFrame(test_data) ba = Bundesanzeiger() result = ba.filter_reports(test_df) assert len(result) == 1 assert result.iloc[0].jahr == "1998" def test_get_information(mock_bundesanzeiger: Mock) -> None: mock_bundesanzeiger.get_reports.return_value = [{}, {}] ba = Bundesanzeiger() result = ba.get_information("PRJ 23 Transparenzregister GmbH", "Iserlohn") assert result is not None