diff --git a/src/ebdtable2graph/models/ebd_table.py b/src/ebdtable2graph/models/ebd_table.py index 18709065..1b709921 100644 --- a/src/ebdtable2graph/models/ebd_table.py +++ b/src/ebdtable2graph/models/ebd_table.py @@ -132,6 +132,22 @@ class EbdTableRow: """ One table row splits into multiple sub rows: one sub row for each check result (ja/nein) """ + use_cases: Optional[List[str]] = attrs.field( + validator=attrs.validators.optional( + attrs.validators.deep_iterable( # type:ignore[arg-type] + member_validator=attrs.validators.instance_of(str), + iterable_validator=attrs.validators.min_len(1), # if the list is not None, it has to have entries + ) + ), + default=None, + ) + """ + If certain rows of the EBD table are only relevant for specific use cases/scenarios, you can denote them here. + E.g. E_0462 step_number 15 may only be applied for use_cases=["Einzug"]. + and E_0462 step_number 16 is only relevant for use_cases=["Einzug", "iMS/kME mit RLM"]. + + None means, there are no restrictions to when the check from the row shall be performed. + """ def has_subsequent_steps(self) -> bool: """ diff --git a/unittests/test_ebd_table_models.py b/unittests/test_ebd_table_models.py index f4cd4f03..0f5f155e 100644 --- a/unittests/test_ebd_table_models.py +++ b/unittests/test_ebd_table_models.py @@ -118,6 +118,28 @@ def test_has_subsequent_steps(self, row: EbdTableRow, expected_result: bool): actual = row.has_subsequent_steps() assert actual == expected_result + def test_ebd_table_row_use_cases(self): + row_17_in_e0462 = EbdTableRow( + step_number="17", + description="Liegt das Eingangsdatum der Anmeldung mehr als sechs Wochen nach dem Lieferbeginndatum der Anmeldung?", + use_cases=["Einzug", "kME ohne RLM/mME/ Pauschalanlage"], + sub_rows=[ + EbdTableSubRow( + check_result=EbdCheckResult(result=True, subsequent_step_number=None), + result_code="A06", + note="Cluster: Ablehnung\nFristüberschreitung bei kME ohne RLM/mME/ Pauschalanlage", + ), + EbdTableSubRow( + check_result=EbdCheckResult(result=False, subsequent_step_number="21"), + result_code=None, + note=None, + ), + ], + ) + assert isinstance(row_17_in_e0462, EbdTableRow) + assert row_17_in_e0462.use_cases is not None + # if it can be instantiated with use cases that's a good enough test for the model + def test_answer_code_aastersik(self): """ This is an example from 6.27.1 E_0455_Information prüfen.