fix: keep pallet labels on A4 templates

This commit is contained in:
2026-09-20 14:05:00 +08:00
parent ee97565f67
commit 493d62e04c
15 changed files with 269 additions and 27 deletions
@@ -56,7 +56,6 @@ class PalletLabelPrintServiceTest {
assertThat(response.getBody()).isEqualTo(pdf);
verify(resources).pallet(0L, 200L, 9L);
verifyNoMoreInteractions(resources);
verify(print, never()).generateInboundMarks(any(), any(), any());
}
@Test
@@ -64,18 +63,20 @@ class PalletLabelPrintServiceTest {
pallet.setPalletCode("ABCD1234567-ABE3-003");
pallet.setFbaWarehouseCode(null);
byte[] pdf = "%PDF-transfer-label".getBytes(java.nio.charset.StandardCharsets.US_ASCII);
when(print.generateInboundMarks(anyString(), anyString(), any()))
when(print.generatePalletA4Labels(anyString(), anyString(), any()))
.thenReturn(ResponseEntity.ok().contentType(MediaType.APPLICATION_PDF).body(pdf));
service.printTransfer(200L, 9L, "WTR-20260916-1", "request-transfer");
var request = ArgumentCaptor.forClass(PrintPdfClient.Request.class);
verify(print).generateInboundMarks(eq("test-token"), eq("request-transfer"), request.capture());
var request = ArgumentCaptor.forClass(PrintPdfClient.PalletA4Request.class);
verify(print).generatePalletA4Labels(eq("test-token"), eq("request-transfer"), request.capture());
assertThat(request.getValue().templateCode()).isEqualTo("PALLET_A4_LANDSCAPE_V1");
assertThat(request.getValue().pageSpec().widthMm()).isEqualByComparingTo("297");
assertThat(request.getValue().pageSpec().heightMm()).isEqualByComparingTo("210");
assertThat(request.getValue().labels()).singleElement().satisfies(label -> {
assertThat(label.topCode()).isEqualTo("ABCD1234567-ABE3-003");
assertThat(label.cartonText()).isEqualTo("转运单 WTR-20260916-1");
assertThat(label.warehouseText()).isEqualTo("目的仓待定");
assertThat(label.routeText()).isEqualTo("洛杉矶仓");
assertThat(label.heading()).isEqualTo("洛杉矶仓");
assertThat(label.reference()).isEqualTo("转运单 WTR-20260916-1");
assertThat(label.palletCode()).isEqualTo("ABCD1234567-ABE3-003");
});
}
@@ -120,12 +121,12 @@ class PalletLabelPrintServiceTest {
@Test
void keepsNonFbaLabelsOnTheirOwnTemplate() {
pallet.setFbaWarehouseCode(null);
when(print.generateInboundMarks(anyString(), anyString(), any()))
when(print.generatePalletA4Labels(anyString(), anyString(), any()))
.thenReturn(ResponseEntity.ok().contentType(MediaType.APPLICATION_PDF).body("%PDF-other".getBytes()));
service.print(200L, 9L, "request-1");
var captor = ArgumentCaptor.forClass(PrintPdfClient.Request.class);
verify(print).generateInboundMarks(anyString(), anyString(), captor.capture());
assertThat(captor.getValue().templateCode()).isEqualTo("INBOUND_MARK_V1");
var captor = ArgumentCaptor.forClass(PrintPdfClient.PalletA4Request.class);
verify(print).generatePalletA4Labels(anyString(), anyString(), captor.capture());
assertThat(captor.getValue().templateCode()).isEqualTo("PALLET_A4_LANDSCAPE_V1");
verify(print, never()).generateFbaPalletLabels(any(), any(), any());
}
}