@@ -678,3 +678,74 @@ def test_validate_last_cesion_matches_some_fields(self) -> None:
678
678
self .assertEqual (len (validation_errors ), len (expected_validation_errors ))
679
679
for expected_validation_error in expected_validation_errors :
680
680
self .assertIn (expected_validation_error , validation_errors )
681
+
682
+ def test_validate_cedente_rut_matches_emisor_rut_in_cesion_seq_1 (self ) -> None :
683
+ self ._set_obj_1 ()
684
+
685
+ obj = self .obj_1
686
+
687
+ expected_validation_errors = [
688
+ {
689
+ 'loc' : ('__root__' ,),
690
+ 'msg' :
691
+ "'cedente_rut' of 'cesion' must match previous 'cesionario_rut'"
692
+ " or DTE\' s 'emisor_rut' if there is no previuos 'cesion'"
693
+ " Rut('76389992-6')"
694
+ " !="
695
+ " Rut('76354771-K')." , # DTE's emisor RUT
696
+ 'type' : 'value_error' ,
697
+ },
698
+ ]
699
+
700
+ with self .assertRaises (pydantic .ValidationError ) as assert_raises_cm :
701
+ dataclasses .replace (
702
+ obj ,
703
+ cesiones = [
704
+ dataclasses .replace (
705
+ obj .cesiones [0 ],
706
+ cedente_rut = obj .cesiones [0 ].cesionario_rut ,
707
+ ),
708
+ obj .cesiones [1 ],
709
+ ],
710
+ )
711
+
712
+ validation_errors = assert_raises_cm .exception .errors ()
713
+ self .assertEqual (len (validation_errors ), len (expected_validation_errors ))
714
+ for expected_validation_error in expected_validation_errors :
715
+ self .assertIn (expected_validation_error , validation_errors )
716
+
717
+ def test_validate_cedente_rut_matches_cesionario_rut_in_cesion_seq_2 (self ) -> None :
718
+ self ._set_obj_1 ()
719
+
720
+ obj = self .obj_1
721
+
722
+ expected_validation_errors = [
723
+ {
724
+ 'loc' : ('__root__' ,),
725
+ 'msg' :
726
+ "'cedente_rut' of 'cesion' must match previous 'cesionario_rut'"
727
+ " or DTE\' s 'emisor_rut' if there is no previuos 'cesion'"
728
+ " Rut('76598556-0')"
729
+ " !="
730
+ " Rut('76389992-6')." , # RUT of the 'cesionario' of the 'cesion' sequence 1
731
+ 'type' : 'value_error' ,
732
+ },
733
+ ]
734
+
735
+ with self .assertRaises (pydantic .ValidationError ) as assert_raises_cm :
736
+ dataclasses .replace (
737
+ obj ,
738
+ cedente_rut = obj .cesiones [1 ].cesionario_rut , # To skip previous validation
739
+ cesiones = [
740
+ obj .cesiones [0 ],
741
+ dataclasses .replace (
742
+ obj .cesiones [1 ],
743
+ cedente_rut = obj .cesiones [1 ].cesionario_rut ,
744
+ ),
745
+ ],
746
+ )
747
+
748
+ validation_errors = assert_raises_cm .exception .errors ()
749
+ self .assertEqual (len (validation_errors ), len (expected_validation_errors ))
750
+ for expected_validation_error in expected_validation_errors :
751
+ self .assertIn (expected_validation_error , validation_errors )
0 commit comments