fix: keep pallet labels on A4 templates
This commit is contained in:
@@ -11,6 +11,7 @@ import com.baiyue.print.service.DispatchBolPdfService;
|
||||
import com.baiyue.print.service.DropshipPalletA4PdfService;
|
||||
import com.baiyue.print.service.InboundMarkPdfService;
|
||||
import com.baiyue.print.service.FbaPalletPdfService;
|
||||
import com.baiyue.print.service.GenericPalletPdfService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -52,6 +53,8 @@ class InternalPdfControllerTest {
|
||||
private DropshipPalletA4PdfService dropshipPalletA4PdfService;
|
||||
@MockBean
|
||||
private FbaPalletPdfService fbaPalletPdfService;
|
||||
@MockBean
|
||||
private GenericPalletPdfService genericPalletPdfService;
|
||||
@Resource
|
||||
private InternalPdfController controller;
|
||||
private MockMvc mockMvc;
|
||||
@@ -232,12 +235,14 @@ class InternalPdfControllerTest {
|
||||
.contains("/internal/print/v1/pdfs/inbound-marks:")
|
||||
.contains("/internal/print/v1/pdfs/freight-a4-documents:")
|
||||
.contains("/internal/print/v1/pdfs/dropship-pallet-a4-documents:")
|
||||
.contains("/internal/print/v1/pdfs/pallet-a4-labels:")
|
||||
.contains("application/pdf:")
|
||||
.contains("application/json:")
|
||||
.contains("name: X-Internal-Service-Token")
|
||||
.contains("SEA_FREIGHT_SHIPPING_INSTRUCTION_A4_V1:")
|
||||
.contains("BILL_OF_LADING_CONFIRMATION_A4_V1:")
|
||||
.contains("DROPSHIP_PALLET_A4_V2")
|
||||
.contains("PALLET_A4_LANDSCAPE_V1")
|
||||
.contains("additionalProperties: false")
|
||||
.contains("minItems: 1")
|
||||
.contains("required: [marksAndNos, quantity, packaging, descriptionOfGoods, grossWeight, measurement]")
|
||||
|
||||
@@ -73,6 +73,16 @@ class PrintRequestSizeFilterTest {
|
||||
assertTooLarge(response);
|
||||
}
|
||||
|
||||
@Test
|
||||
void capsGenericPalletRequestsBeforeDeserialization() throws Exception {
|
||||
var response = new MockHttpServletResponse();
|
||||
AtomicReference<Boolean> called = new AtomicReference<>(false);
|
||||
filter.doFilter(request("12345678901", true, "/internal/print/v1/pdfs/pallet-a4-labels"),
|
||||
response, (ignoredRequest, ignoredResponse) -> called.set(true));
|
||||
assertThat(called).hasValue(false);
|
||||
assertTooLarge(response);
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsOversizedDeclaredContentLengthWithoutCallingDownstream() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest() {
|
||||
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.baiyue.print.service;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import com.baiyue.print.config.PrintPdfProperties;
|
||||
import com.baiyue.print.dto.GenericPalletPdfDtos;
|
||||
import com.baiyue.print.renderer.GenericPalletRenderer;
|
||||
import com.baiyue.print.renderer.PdfBarcodeRenderer;
|
||||
import com.baiyue.print.renderer.PdfUnits;
|
||||
import java.math.BigDecimal;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import org.apache.pdfbox.Loader;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.text.PDFTextStripper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
|
||||
@SpringJUnitConfig(classes = {GenericPalletPdfService.class, PrintPdfProperties.class,
|
||||
PdfGenerationLimiter.class, GenericPalletRenderer.class, PdfBarcodeRenderer.class})
|
||||
class GenericPalletPdfServiceGenerationTest {
|
||||
@jakarta.annotation.Resource private GenericPalletPdfService service;
|
||||
|
||||
@Test
|
||||
void generatesLandscapeA4WithoutUsingTheCartonMarkTemplate() throws Exception {
|
||||
var generated = service.generate(new GenericPalletPdfDtos.Request(
|
||||
GenericPalletPdfDtos.TEMPLATE,
|
||||
new GenericPalletPdfDtos.PageSpec(new BigDecimal("297"), new BigDecimal("210")),
|
||||
"pallet.pdf", List.of(new GenericPalletPdfDtos.Label(
|
||||
"Los Angeles Warehouse", "Transfer WTR-1", "PALLET-001"))));
|
||||
Files.createDirectories(Path.of("target"));
|
||||
Files.write(Path.of("target", "generic-pallet-a4-preview.pdf"), generated.content());
|
||||
|
||||
try (PDDocument pdf = Loader.loadPDF(generated.content())) {
|
||||
assertThat(pdf.getNumberOfPages()).isEqualTo(1);
|
||||
assertThat(pdf.getPage(0).getMediaBox().getWidth()).isCloseTo(PdfUnits.mmToPt(297), org.assertj.core.data.Offset.offset(.002f));
|
||||
assertThat(pdf.getPage(0).getMediaBox().getHeight()).isCloseTo(PdfUnits.mmToPt(210), org.assertj.core.data.Offset.offset(.002f));
|
||||
assertThat(new PDFTextStripper().getText(pdf)).contains(
|
||||
"Los Angeles Warehouse", "Transfer WTR-1", "PALLET-001");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user