package jnpf.dmsService;
|
|
import jnpf.base.ActionResult;
|
import jnpf.dms.DmsResourceApi;
|
import jnpf.dmsEntity.DmsWenjianBanbenEntity;
|
import jnpf.dmsEntity.print.form.DmsWorkflowPrintFilesGrantForm;
|
import jnpf.dmsEntity.print.vo.DmsWorkflowPrintFilesGrantResultVO;
|
import jnpf.dmsEntity.waifa.DmsWenjianWaifaShenqingDetailEntity;
|
import jnpf.dmsEntity.waifa.DmsWenjianWaifaShenqingEntity;
|
import jnpf.dmsMapper.DmsWenjianBanbenMapper;
|
import jnpf.dmsMapper.DmsWenjianWaifaShenqingDetailMapper;
|
import jnpf.dmsMapper.DmsWenjianWaifaShenqingMapper;
|
import jnpf.exception.DataException;
|
import org.junit.jupiter.api.Test;
|
import org.mockito.ArgumentCaptor;
|
|
import java.util.Arrays;
|
import java.util.Collections;
|
import java.util.UUID;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.eq;
|
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 DmsWenjianFuzhuGuanliWaifaServiceTest {
|
|
private static final UUID DOCUMENT_ID =
|
UUID.fromString("018f0000-0000-7000-8000-000000000911");
|
private static final UUID FILE_VERSION_ID =
|
UUID.fromString("018f0000-0000-7000-8000-000000000912");
|
|
@Test
|
void grantsPermanentPrintPermissionToExternalRequestApplicant() {
|
Fixture fixture = new Fixture();
|
when(fixture.shenqingMapper.selectList(any()))
|
.thenReturn(Collections.singletonList(application()));
|
when(fixture.zixiangMapper.selectList(any()))
|
.thenReturn(Arrays.asList(detail("version-1"), detail("version-1")));
|
when(fixture.banbenMapper.selectList(any()))
|
.thenReturn(Collections.singletonList(banben("version-1")));
|
DmsWorkflowPrintFilesGrantResultVO expected =
|
new DmsWorkflowPrintFilesGrantResultVO(1, 1);
|
when(fixture.dmsResourceApi.grantWorkflowPrintFiles(
|
eq("jnpf-flowable"), any())).thenReturn(ActionResult.success("success", expected));
|
|
DmsWorkflowPrintFilesGrantResultVO result = fixture.service.waifaWenjianShouquan(
|
" flow-1 ", " task-1 ");
|
|
assertSame(expected, result);
|
ArgumentCaptor<DmsWorkflowPrintFilesGrantForm> formCaptor =
|
ArgumentCaptor.forClass(DmsWorkflowPrintFilesGrantForm.class);
|
verify(fixture.dmsResourceApi).grantWorkflowPrintFiles(
|
eq("jnpf-flowable"), formCaptor.capture());
|
DmsWorkflowPrintFilesGrantForm form = formCaptor.getValue();
|
assertEquals("applicant-1", form.getUserId());
|
assertEquals(1, form.getFiles().size());
|
assertEquals(DOCUMENT_ID, form.getFiles().get(0).getDocumentId());
|
assertEquals(FILE_VERSION_ID, form.getFiles().get(0).getFileVersionId());
|
assertNull(form.getFiles().get(0).getValidTo());
|
}
|
|
@Test
|
void rejectsPartialBusinessVersionMatchesBeforeCallingAuthorizationApi() {
|
Fixture fixture = new Fixture();
|
when(fixture.shenqingMapper.selectList(any()))
|
.thenReturn(Collections.singletonList(application()));
|
when(fixture.zixiangMapper.selectList(any()))
|
.thenReturn(Arrays.asList(detail("version-1"), detail("version-2")));
|
when(fixture.banbenMapper.selectList(any()))
|
.thenReturn(Collections.singletonList(banben("version-1")));
|
|
assertThrows(DataException.class,
|
() -> fixture.service.waifaWenjianShouquan("flow-1", "task-1"));
|
|
verify(fixture.dmsResourceApi, never()).grantWorkflowPrintFiles(any(), any());
|
}
|
|
@Test
|
void rejectsFailedAuthorizationResponse() {
|
Fixture fixture = new Fixture();
|
when(fixture.shenqingMapper.selectList(any()))
|
.thenReturn(Collections.singletonList(application()));
|
when(fixture.zixiangMapper.selectList(any()))
|
.thenReturn(Collections.singletonList(detail("version-1")));
|
when(fixture.banbenMapper.selectList(any()))
|
.thenReturn(Collections.singletonList(banben("version-1")));
|
when(fixture.dmsResourceApi.grantWorkflowPrintFiles(any(), any()))
|
.thenReturn(ActionResult.fail("授权被拒绝"));
|
|
DataException exception = assertThrows(DataException.class,
|
() -> fixture.service.waifaWenjianShouquan("flow-1", "task-1"));
|
|
assertEquals("授权被拒绝", exception.getMessage());
|
}
|
|
private static DmsWenjianWaifaShenqingEntity application() {
|
DmsWenjianWaifaShenqingEntity entity = new DmsWenjianWaifaShenqingEntity();
|
entity.setId("application-1");
|
entity.setTenantId("tenant-1");
|
entity.setApplicantUserId(" applicant-1 ");
|
return entity;
|
}
|
|
private static DmsWenjianWaifaShenqingDetailEntity detail(String banbenId) {
|
DmsWenjianWaifaShenqingDetailEntity entity =
|
new DmsWenjianWaifaShenqingDetailEntity();
|
entity.setId("detail-" + banbenId);
|
entity.setRequestId("application-1");
|
entity.setTenantId("tenant-1");
|
entity.setBanbenId(banbenId);
|
return entity;
|
}
|
|
private static DmsWenjianBanbenEntity banben(String banbenId) {
|
DmsWenjianBanbenEntity entity = new DmsWenjianBanbenEntity();
|
entity.setId(banbenId);
|
entity.setTenantId("tenant-1");
|
entity.setWenjianZhongxinWenjianId(DOCUMENT_ID.toString());
|
entity.setWenjianZhongxinBanbenId(FILE_VERSION_ID.toString());
|
return entity;
|
}
|
|
private static class Fixture {
|
private final DmsWenjianWaifaShenqingMapper shenqingMapper =
|
mock(DmsWenjianWaifaShenqingMapper.class);
|
private final DmsWenjianWaifaShenqingDetailMapper zixiangMapper =
|
mock(DmsWenjianWaifaShenqingDetailMapper.class);
|
private final DmsWenjianBanbenMapper banbenMapper = mock(DmsWenjianBanbenMapper.class);
|
private final DmsResourceApi dmsResourceApi = mock(DmsResourceApi.class);
|
private final DmsWenjianFuzhuGuanliWaifaService service =
|
new DmsWenjianFuzhuGuanliWaifaService(
|
shenqingMapper, zixiangMapper, banbenMapper, dmsResourceApi);
|
}
|
}
|