Skip to content

Commit 78e8d79

Browse files
committed
Refactor ValidationCoherenceTest for improved readability and consistency in builder patterns
Signed-off-by: Edwin Luis Barboza Pinedo <ibarboza27498@gmail.com>
1 parent 43794dc commit 78e8d79

1 file changed

Lines changed: 92 additions & 39 deletions

File tree

xbuilder/core/src/test/java/unit/validator/ValidationCoherenceTest.java

Lines changed: 92 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,15 @@
1515
import static org.junit.jupiter.api.Assertions.*;
1616

1717
/**
18-
* Tests de integración que verifican la coherencia entre los tres validadores
19-
* (DespatchAdviceValidator, GRERemitente, GRETransportista) después de la
20-
* centralización en DespatchAdviceCommonValidator.
18+
* Tests de integración que verifican la coherencia entre los tres validadores (DespatchAdviceValidator, GRERemitente,
19+
* GRETransportista) después de la centralización en DespatchAdviceCommonValidator.
2120
* <p>
2221
* Asegura que:
2322
* <ul>
24-
* <li>La misma regla produce el mismo resultado en los tres puntos de entrada</li>
25-
* <li>Los mensajes de error tienen el texto esperado</li>
26-
* <li>La conversión toDespatchAdvice() + validación produce resultados coherentes</li>
27-
* <li>validate() y validateDetailed() son consistentes</li>
23+
* <li>La misma regla produce el mismo resultado en los tres puntos de entrada</li>
24+
* <li>Los mensajes de error tienen el texto esperado</li>
25+
* <li>La conversión toDespatchAdvice() + validación produce resultados coherentes</li>
26+
* <li>validate() y validateDetailed() son consistentes</li>
2827
* </ul>
2928
*/
3029
public class ValidationCoherenceTest {
@@ -35,53 +34,79 @@ public class ValidationCoherenceTest {
3534

3635
private static GRERemitente.GRERemitenteBuilder minimalRemitente() {
3736
return GRERemitente.builder()
38-
.serie("T001").numero(1)
37+
.serie("T001")
38+
.numero(1)
3939
.remitente(Remitente.builder().ruc("12345678912").razonSocial("Test S.A.C.").build())
4040
.destinatario(Destinatario.builder()
4141
.tipoDocumentoIdentidad(Catalog6.DNI.getCode())
42-
.numeroDocumentoIdentidad("12345678").nombre("Cliente").build())
42+
.numeroDocumentoIdentidad("12345678")
43+
.nombre("Cliente")
44+
.build())
4345
.envio(Envio.builder()
4446
.tipoTraslado(Catalog20.VENTA.getCode())
45-
.pesoTotal(BigDecimal.ONE).pesoTotalUnidadMedida("KGM")
47+
.pesoTotal(BigDecimal.ONE)
48+
.pesoTotalUnidadMedida("KGM")
4649
.tipoModalidadTraslado(Catalog18.TRANSPORTE_PRIVADO.getCode())
4750
.fechaTraslado(LocalDate.now())
4851
.chofer(Driver.builder()
49-
.tipoDocumentoIdentidad("1").numeroDocumentoIdentidad("11111111")
50-
.nombres("J").apellidos("P").licencia("Q123").build())
52+
.tipoDocumentoIdentidad("1")
53+
.numeroDocumentoIdentidad("11111111")
54+
.nombres("J")
55+
.apellidos("P")
56+
.licencia("Q123")
57+
.build())
5158
.vehiculo(Vehicle.builder().placa("ABC-123").build())
5259
.partida(Partida.builder().ubigeo("010101").direccion("O").build())
5360
.destino(Destino.builder().ubigeo("020202").direccion("D").build())
5461
.build())
5562
.detalle(DespatchAdviceItem.builder()
56-
.cantidad(BigDecimal.ONE).unidadMedida("NIU").codigo("001").build());
63+
.cantidad(BigDecimal.ONE)
64+
.unidadMedida("NIU")
65+
.codigo("001")
66+
.build());
5767
}
5868

5969
private static GRETransportista.GRETransportistaBuilder minimalTransportista() {
6070
return GRETransportista.builder()
61-
.serie("V001").numero(1)
71+
.serie("V001")
72+
.numero(1)
6273
.transportistaEmisor(Transportista.builder()
6374
.tipoDocumentoIdentidad(Catalog6.RUC.getCode())
64-
.numeroDocumentoIdentidad("20300030003").nombre("Transportes S.A.C.").build())
75+
.numeroDocumentoIdentidad("20300030003")
76+
.nombre("Transportes S.A.C.")
77+
.build())
6578
.remitente(Tercero.builder()
6679
.tipoDocumentoIdentidad(Catalog6.RUC.getCode())
67-
.numeroDocumentoIdentidad("20100010001").nombre("Remitente S.A.C.").build())
80+
.numeroDocumentoIdentidad("20100010001")
81+
.nombre("Remitente S.A.C.")
82+
.build())
6883
.destinatario(Destinatario.builder()
6984
.tipoDocumentoIdentidad(Catalog6.RUC.getCode())
70-
.numeroDocumentoIdentidad("20200020002").nombre("Destino S.A.").build())
85+
.numeroDocumentoIdentidad("20200020002")
86+
.nombre("Destino S.A.")
87+
.build())
7188
.conductor(Driver.builder()
72-
.tipoDocumentoIdentidad("1").numeroDocumentoIdentidad("44444444")
73-
.nombres("M").apellidos("T").licencia("Q444").build())
89+
.tipoDocumentoIdentidad("1")
90+
.numeroDocumentoIdentidad("44444444")
91+
.nombres("M")
92+
.apellidos("T")
93+
.licencia("Q444")
94+
.build())
7495
.vehiculo(Vehicle.builder().placa("XYZ-789").build())
7596
.envio(Envio.builder()
7697
.tipoTraslado(Catalog20.VENTA.getCode())
77-
.pesoTotal(BigDecimal.ONE).pesoTotalUnidadMedida("KGM")
98+
.pesoTotal(BigDecimal.ONE)
99+
.pesoTotalUnidadMedida("KGM")
78100
.tipoModalidadTraslado(Catalog18.TRANSPORTE_PUBLICO.getCode())
79101
.fechaTraslado(LocalDate.now())
80102
.partida(Partida.builder().ubigeo("010101").direccion("O").build())
81103
.destino(Destino.builder().ubigeo("020202").direccion("D").build())
82104
.build())
83105
.detalle(DespatchAdviceItem.builder()
84-
.cantidad(BigDecimal.ONE).unidadMedida("NIU").codigo("001").build());
106+
.cantidad(BigDecimal.ONE)
107+
.unidadMedida("NIU")
108+
.codigo("001")
109+
.build());
85110
}
86111

87112
// ================================================================
@@ -182,8 +207,12 @@ public void testInvalidSerieDetectedByBoth() {
182207
public void testConversionInjectsConductoresAndVehiculo() {
183208
GRETransportista gre = minimalTransportista()
184209
.conductor(Driver.builder()
185-
.tipoDocumentoIdentidad("1").numeroDocumentoIdentidad("99999999")
186-
.nombres("Extra").apellidos("D").licencia("Q999").build())
210+
.tipoDocumentoIdentidad("1")
211+
.numeroDocumentoIdentidad("99999999")
212+
.nombres("Extra")
213+
.apellidos("D")
214+
.licencia("Q999")
215+
.build())
187216
.build();
188217

189218
DespatchAdvice da = gre.toDespatchAdvice();
@@ -197,7 +226,8 @@ public void testConversionInjectsConductoresAndVehiculo() {
197226
@Test
198227
public void testValidateAndValidateDetailedAreConsistent() {
199228
GRETransportista gre = minimalTransportista()
200-
.transportistaEmisor(null).build();
229+
.transportistaEmisor(null)
230+
.build();
201231

202232
List<String> errors = gre.validate();
203233
ValidationResult result = gre.validateDetailed();
@@ -259,23 +289,37 @@ class SeverityUniformity {
259289
public void testComercioExteriorWarningsInAllThreeValidators() {
260290
// DespatchAdviceValidator
261291
DespatchAdvice da = DespatchAdvice.builder()
262-
.serie("T001").numero(1).tipoComprobante("09")
292+
.serie("T001")
293+
.numero(1)
294+
.tipoComprobante("09")
263295
.remitente(Remitente.builder().ruc("12345678912").razonSocial("T").build())
264296
.destinatario(Destinatario.builder()
265-
.tipoDocumentoIdentidad("1").numeroDocumentoIdentidad("12345678").nombre("C").build())
297+
.tipoDocumentoIdentidad("1")
298+
.numeroDocumentoIdentidad("12345678")
299+
.nombre("C")
300+
.build())
266301
.envio(Envio.builder()
267302
.tipoTraslado("08") // Importación
268-
.pesoTotal(BigDecimal.ONE).pesoTotalUnidadMedida("KGM")
269-
.tipoModalidadTraslado("02").fechaTraslado(LocalDate.now())
270-
.chofer(Driver.builder().tipoDocumentoIdentidad("1")
271-
.numeroDocumentoIdentidad("11111111").nombres("J")
272-
.apellidos("P").licencia("Q123").build())
303+
.pesoTotal(BigDecimal.ONE)
304+
.pesoTotalUnidadMedida("KGM")
305+
.tipoModalidadTraslado("02")
306+
.fechaTraslado(LocalDate.now())
307+
.chofer(Driver.builder()
308+
.tipoDocumentoIdentidad("1")
309+
.numeroDocumentoIdentidad("11111111")
310+
.nombres("J")
311+
.apellidos("P")
312+
.licencia("Q123")
313+
.build())
273314
.vehiculo(Vehicle.builder().placa("ABC-123").build())
274315
.partida(Partida.builder().ubigeo("010101").direccion("O").build())
275316
.destino(Destino.builder().ubigeo("020202").direccion("D").build())
276317
.build())
277318
.detalle(DespatchAdviceItem.builder()
278-
.cantidad(BigDecimal.ONE).unidadMedida("NIU").codigo("001").build())
319+
.cantidad(BigDecimal.ONE)
320+
.unidadMedida("NIU")
321+
.codigo("001")
322+
.build())
279323
.build();
280324

281325
ValidationResult daResult = DespatchAdviceValidator.validateDetailed(da);
@@ -285,11 +329,18 @@ public void testComercioExteriorWarningsInAllThreeValidators() {
285329

286330
// GRERemitente: same
287331
GRERemitente gre = minimalRemitente().envio(Envio.builder()
288-
.tipoTraslado("08").pesoTotal(BigDecimal.ONE).pesoTotalUnidadMedida("KGM")
289-
.tipoModalidadTraslado("02").fechaTraslado(LocalDate.now())
290-
.chofer(Driver.builder().tipoDocumentoIdentidad("1")
291-
.numeroDocumentoIdentidad("11111111").nombres("J")
292-
.apellidos("P").licencia("Q123").build())
332+
.tipoTraslado("08")
333+
.pesoTotal(BigDecimal.ONE)
334+
.pesoTotalUnidadMedida("KGM")
335+
.tipoModalidadTraslado("02")
336+
.fechaTraslado(LocalDate.now())
337+
.chofer(Driver.builder()
338+
.tipoDocumentoIdentidad("1")
339+
.numeroDocumentoIdentidad("11111111")
340+
.nombres("J")
341+
.apellidos("P")
342+
.licencia("Q123")
343+
.build())
293344
.vehiculo(Vehicle.builder().placa("ABC-123").build())
294345
.partida(Partida.builder().ubigeo("010101").direccion("O").build())
295346
.destino(Destino.builder().ubigeo("020202").direccion("D").build())
@@ -307,9 +358,11 @@ public void testHardErrorsNeverDowngradedToWarning() {
307358
GRERemitente gre = minimalRemitente().serie(null).build();
308359
ValidationResult result = gre.validateDetailed();
309360
assertTrue(result.hasErrors());
310-
assertTrue(result.getMessages().stream()
361+
assertTrue(result.getMessages()
362+
.stream()
311363
.filter(m -> m.getMessage().contains("serie"))
312-
.allMatch(m -> m.getSeverity() == io.github.project.openubl.xbuilder.content.models.standard.guia.validation.ValidationSeverity.ERROR));
364+
.allMatch(m -> m
365+
.getSeverity() == io.github.project.openubl.xbuilder.content.models.standard.guia.validation.ValidationSeverity.ERROR));
313366
}
314367
}
315368
}

0 commit comments

Comments
 (0)