Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/ebdtable2graph/models/ebd_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
"""
Expand Down
22 changes: 22 additions & 0 deletions unittests/test_ebd_table_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down