package jnpf.flowable.service; import jnpf.exception.DataException; import jnpf.flowable.model.filepermission.WorkflowFileCheckpoint; import jnpf.flowable.util.filepermission.FilePermissionSnapshot; import org.junit.Test; import org.springframework.beans.factory.ObjectProvider; import java.util.*; import java.util.function.Consumer; import static org.mockito.Mockito.*; import static org.junit.Assert.*; public class WorkflowFileCheckpointSupportTest { @Test public void legacyProcessContinuesWithoutResolvingSharedImplementation() { FilePermissionSnapshotService snapshots = mock(FilePermissionSnapshotService.class); ObjectProvider provider = mock(ObjectProvider.class); Map input = new HashMap<>(); List> seen = new ArrayList<>(); new WorkflowFileCheckpointSupport(snapshots,provider).save("task","form",input,seen::add); assertSame(input,seen.get(0)); verifyNoInteractions(provider); } @Test public void controlledProcessCannotSilentlySkipUnavailableImplementation() { FilePermissionSnapshotService snapshots = mock(FilePermissionSnapshotService.class); when(snapshots.find("task")).thenReturn(mock(FilePermissionSnapshot.class)); ObjectProvider provider = mock(ObjectProvider.class); Consumer> continuation = mock(Consumer.class); try { new WorkflowFileCheckpointSupport(snapshots,provider).save("task","form",Map.of(),continuation); fail("missing integration"); } catch (DataException expected) { } verifyNoInteractions(continuation); } @Test public void forwardsHandlingReferenceWithoutAddingAnotherSave() { FilePermissionSnapshotService snapshots = mock(FilePermissionSnapshotService.class); when(snapshots.find("task")).thenReturn(mock(FilePermissionSnapshot.class)); ObjectProvider provider = mock(ObjectProvider.class); WorkflowFileCheckpoint service = mock(WorkflowFileCheckpoint.class); when(provider.getIfAvailable()).thenReturn(service); Map data = Map.of(); Consumer> continuation = mock(Consumer.class); new WorkflowFileCheckpointSupport(snapshots, provider).save("task", "form", "operator", data, continuation); verify(service).save("task", "form", "operator", data, continuation); verifyNoMoreInteractions(service); } }