刘光辉
117 分钟以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package jnpf.flowable.service;
 
import jnpf.flowable.mapper.FilePermissionRuntimeMapper;
import jnpf.flowable.mapper.TemplateNodeMapper;
import jnpf.flowable.model.filepermission.FilePermissionNativeState;
import jnpf.flowable.util.ServiceUtil;
import jnpf.flowable.util.filepermission.FilePermissionSnapshot;
import org.junit.Test;
import java.util.*;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
 
public class NativeFilePermissionReadReuseTest {
    @Test public void reuseSkipsDefinitionRoundTripButStillDetectsConcurrentTransition() {
        FilePermissionRuntimeMapper mapper = mock(FilePermissionRuntimeMapper.class);
        TemplateNodeMapper nodes = mock(TemplateNodeMapper.class);
        ServiceUtil forms = mock(ServiceUtil.class);
        var service = new NativeFilePermissionRuntimeSource(mapper,nodes,forms);
        var before = new FilePermissionNativeState(); before.setTaskId("task"); before.setFlowId("flow"); before.setStatus(0); before.setFlowType(1);
        var after = new FilePermissionNativeState(); after.setTaskId("task"); after.setFlowId("flow"); after.setStatus(1); after.setFlowType(1);
        when(mapper.find("task")).thenReturn(before,after);
        when(nodes.getList("flow")).thenReturn(List.of());
        var snapshot = FilePermissionSnapshot.read(FilePermissionSnapshot.create("tenant","task","flow",Map.of("version",1,"rules",List.of())),"tenant","task");
        var result = service.readWithPublishedForm("tenant","task","form","user",snapshot,"{\"fields\":[]}");
        assertTrue(result.transitioning); verify(mapper,times(2)).find("task"); verifyNoInteractions(forms);
    }
}