"""Tests if the bundesanzeiger can be accessed and read.""" from unittest.mock import Mock, patch import pandas as pd from aki_prj23_transparenzregister.utils.data_extraction.bundesanzeiger import ( Bundesanzeiger, ) from aki_prj23_transparenzregister.utils.enum_types import FinancialKPIEnum def test_extract_auditor_company_no_hits() -> None: input_data = """ Mega GmbH Nothing to see here """ ba = Bundesanzeiger() result = ba.extract_auditor_company(input_data, "Mega GmbH") assert result is None def test_extract_auditor_company_self_referencing() -> None: company = "Mega GmbH" auditor_company = "Super AG" input_data = f""" {company}
Nothing to see here
{auditor_company}
Nothing to see here
""" ba = Bundesanzeiger() result = ba.extract_auditor_company(input_data, company) assert result == auditor_company 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, "Super AG") 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_extract_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": "", "raw_report": ""}, { "name": "Jahresabschluss vom 01.01.1998 bis zum 31.12.1998", "report": "", "raw_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" @patch( "aki_prj23_transparenzregister.utils.data_extraction.bundesanzeiger.Ba.get_reports" ) def test_get_information(mock_bundesanzeiger: Mock) -> None: mock_bundesanzeiger.return_value = { "1": { "name": "Bedienungsanleitung", "report": "", "company": "", "raw_report": "", }, "2": { "name": "Jahresabschluss 01.01.1998", "report": "", "company": "PRJ 23 Transparenzregister GmbH", "raw_report": "", }, } ba = Bundesanzeiger() result = ba.get_information("PRJ 23 Transparenzregister GmbH", "Iserlohn") assert len(result) == 1 @patch( "aki_prj23_transparenzregister.utils.data_extraction.bundesanzeiger.Ba.get_reports" ) def test_get_information_no_results(mock_bundesanzeiger: Mock) -> None: mock_bundesanzeiger.return_value = {} ba = Bundesanzeiger() result = ba.get_information("PRJ 23 Transparenzregister GmbH", "Iserlohn") assert len(result) == 0 def test_extract_tables_from_reports() -> None: report = """
Möge die Macht mir dir sein
Column A Column B
42 4711
""" ba = Bundesanzeiger() result = ba.__extract_tables_from_report__(report) assert len(result) == 1 def test_parse_tables_to_kpis() -> None: report = """
Möge die Macht mir dir sein
Position 2023 in T€ 1997 in €
a) Umlaufvermögen 12,13 4711
+EBIT 1123 4711
To be ignored I've tried so hard and got so far, but in the end it doesn't even matter 4711
Gewinn 4711
Jahresüberschuss 4.130,12 4711
""" ba = Bundesanzeiger() result = ba.parse_tables_to_kpis(report) assert result == { "Umlaufvermögen": 12130.0, "EBIT": 1123000.0, "Jahresüberschuss": 4130120.0, }