package jnpf.dmsService.search; import jnpf.dmsEntity.permission.entity.DmsDocumentEntity; import jnpf.dmsEntity.search.model.DmsSearchIndexSource; import jnpf.dmsMapper.DmsDocumentMapper; import jnpf.dmsMapper.DmsSearchIndexSourceMapper; import jnpf.dmsService.search.meili.*; import org.junit.jupiter.api.Test; import org.mockito.InOrder; import java.util.UUID; import static org.mockito.Mockito.*; class DmsSearchIndexWriterTest { @Test void lateExtractionCannotPublishAfterExpiryAndLockPrecedesFinalRead() throws Exception { DmsDocumentMapper documents = mock(DmsDocumentMapper.class); DmsSearchIndexSourceMapper sources = mock(DmsSearchIndexSourceMapper.class); DmsMeilisearchClient client = mock(DmsMeilisearchClient.class); DmsSearchIndexWriter writer = new DmsSearchIndexWriter(documents, sources, client); UUID doc = UUID.randomUUID(), version = UUID.randomUUID(); DmsSearchIndexDocument value = new DmsSearchIndexDocument(); value.setTenantId("t"); value.setDocumentId(doc.toString()); value.setFileVersionId(version.toString()); when(documents.selectByTenantAndIdForUpdate("t", doc)).thenReturn(new DmsDocumentEntity()); writer.publish(value); verifyNoInteractions(client); clearInvocations(documents, sources); when(sources.selectSource("t", doc, version)).thenReturn(new DmsSearchIndexSource()); writer.publish(value); InOrder order = inOrder(documents, sources, client); order.verify(documents).selectByTenantAndIdForUpdate("t", doc); order.verify(sources).selectSource("t", doc, version); order.verify(client).upsert(value); } }