package jnpf.dmsService.pdf; import jnpf.dmsMapper.DmsPdfGenerationTaskMapper; import org.junit.jupiter.api.Test; import java.util.UUID; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; class DmsPdfGenerationTaskServiceTest { private final DmsPdfGenerationTaskMapper mapper = mock(DmsPdfGenerationTaskMapper.class); private final DmsPdfGenerationTaskService service = new DmsPdfGenerationTaskService(mapper); @Test void enqueuesDocAndDocxButSkipsOtherFiles() { UUID doc = UUID.randomUUID(); UUID docx = UUID.randomUUID(); UUID pdf = UUID.randomUUID(); service.enqueueEligible("tenant", doc, "a.DOC", "A".repeat(64)); service.enqueueEligible("tenant", docx, "b.docx", "b".repeat(64)); service.enqueueEligible("tenant", pdf, "c.pdf", "c".repeat(64)); verify(mapper).enqueue("tenant", doc, "a".repeat(64)); verify(mapper).enqueue("tenant", docx, "b".repeat(64)); verify(mapper, never()).enqueue("tenant", pdf, "c".repeat(64)); } @Test void requeuesMissingWordButSkipsOtherFiles() { UUID docx = UUID.randomUUID(); UUID pdf = UUID.randomUUID(); service.enqueueMissingEligible("tenant", docx, "a.docx", "A".repeat(64)); service.enqueueMissingEligible("tenant", pdf, "b.pdf", "b".repeat(64)); verify(mapper).requeue("tenant", docx, "a".repeat(64)); verify(mapper, never()).requeue("tenant", pdf, "b".repeat(64)); } @Test void invalidationRequeuesOnlyWhenCurrentPdfWasCleared() { jnpf.dmsEntity.storage.form.DmsPersistentPdfInvalidationForm form = new jnpf.dmsEntity.storage.form.DmsPersistentPdfInvalidationForm(); UUID versionId = UUID.randomUUID(); form.setTenantId("tenant"); form.setFileVersionId(versionId); form.setSourceChecksumSha256("a".repeat(64)); form.setObjectKey("dms-derived/pdf/version/source.pdf"); when(mapper.clearInvalidPdf("tenant", versionId, "a".repeat(64), form.getObjectKey())) .thenReturn(1); service.invalidateAndRequeue(form); verify(mapper).requeue("tenant", versionId, "a".repeat(64)); } @Test void staleInvalidationDoesNotRequeueCurrentPdf() { jnpf.dmsEntity.storage.form.DmsPersistentPdfInvalidationForm form = new jnpf.dmsEntity.storage.form.DmsPersistentPdfInvalidationForm(); UUID versionId = UUID.randomUUID(); form.setTenantId("tenant"); form.setFileVersionId(versionId); form.setSourceChecksumSha256("a".repeat(64)); form.setObjectKey("dms-derived/pdf/version/stale.pdf"); service.invalidateAndRequeue(form); verify(mapper, never()).requeue("tenant", versionId, "a".repeat(64)); } }