From a5ca833cb114a312213e90dcc34689d7b55f11df Mon Sep 17 00:00:00 2001 From: Samuel Villegas Date: Tue, 31 Oct 2023 12:31:57 -0300 Subject: [PATCH] chore(dte): Improve validation error message in `DteXmlData.referencias` * Improved exception message at `.DteXmlData.validate_referencias_numero_linea_ref_order` * Included Expected an actual value * Added list of all actual values or `DteXmlData.referencias` in message Ref: https://app.shortcut.com/cordada/story/1493/ --- src/cl_sii/dte/data_models.py | 8 +++++++- src/tests/test_dte_data_models.py | 6 +++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/cl_sii/dte/data_models.py b/src/cl_sii/dte/data_models.py index 7537172f..06f822b4 100644 --- a/src/cl_sii/dte/data_models.py +++ b/src/cl_sii/dte/data_models.py @@ -811,7 +811,13 @@ def validate_referencias_numero_linea_ref_order(cls, v: object) -> object: if isinstance(v, Sequence): for idx, referencia in enumerate(v, start=1): if referencia.numero_linea_ref != idx: - raise ValueError("items must be ordered according to their 'numero_linea_ref'") + raise ValueError( + "items must be ordered according to their 'numero_linea_ref'. " + f"Expected index value: {idx}, " + f"actual numero linea ref: {referencia.numero_linea_ref}. " + f"All numero_linea_refs: " + f"{', '.join(str(ref.numero_linea_ref) for ref in v)}" + ) return v @pydantic.model_validator(mode='after') diff --git a/src/tests/test_dte_data_models.py b/src/tests/test_dte_data_models.py index 9ad827c7..8c7372c1 100644 --- a/src/tests/test_dte_data_models.py +++ b/src/tests/test_dte_data_models.py @@ -1699,7 +1699,11 @@ def test_validate_referencias_numero_linea_ref_order(self) -> None: expected_validation_errors = [ { 'loc': ('referencias',), - 'msg': "Value error, items must be ordered according to their 'numero_linea_ref'", + 'msg': ( + "Value error, items must be ordered according to their 'numero_linea_ref'. " + "Expected index value: 1, actual numero linea ref: 2. " + "All numero_linea_refs: 2, 1" + ), 'type': 'value_error', }, ]