package jnpf.dmsService;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
import jnpf.dmsEntity.DmsDanganCundangShenqingEntity;
|
import jnpf.dmsEntity.DmsDanganCundangShenqingGuidangEntity;
|
import jnpf.dmsEntity.recordprint.DmsJiluDayinLiushuiEntity;
|
import jnpf.dmsMapper.DmsDanganCundangShenqingGuidangMapper;
|
import jnpf.dmsMapper.DmsDanganCundangShenqingMapper;
|
import jnpf.dmsMapper.DmsJiluDayinLiushuiMapper;
|
import jnpf.dmsMapper.DmsWenjianFenfaMapper;
|
import jnpf.dmsService.impl.DmsDanganCundangShenqingTongguoServiceImpl;
|
import jnpf.exception.DataException;
|
import org.apache.ibatis.builder.MapperBuilderAssistant;
|
import org.apache.ibatis.session.Configuration;
|
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.Test;
|
import org.mockito.ArgumentCaptor;
|
|
import java.util.Arrays;
|
import java.util.Collections;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.isNull;
|
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 DmsDanganCundangShenqingTongguoServiceTest {
|
|
@BeforeEach
|
void setUp() {
|
initialize(DmsDanganCundangShenqingEntity.class);
|
initialize(DmsDanganCundangShenqingGuidangEntity.class);
|
initialize(DmsJiluDayinLiushuiEntity.class);
|
}
|
|
@Test
|
void archivesBothKindsOfPrintSerialForEveryApprovedDetail() throws Exception {
|
DmsDanganCundangShenqingMapper shenqingMapper = mock(DmsDanganCundangShenqingMapper.class);
|
DmsDanganCundangShenqingGuidangMapper guidangMapper =
|
mock(DmsDanganCundangShenqingGuidangMapper.class);
|
DmsJiluDayinLiushuiMapper jiluMapper = mock(DmsJiluDayinLiushuiMapper.class);
|
DmsWenjianFenfaMapper wenjianMapper = mock(DmsWenjianFenfaMapper.class);
|
when(shenqingMapper.selectList(any())).thenReturn(Collections.singletonList(application("apply-1")));
|
when(guidangMapper.selectList(any())).thenReturn(Arrays.asList(
|
detail("record-1", "file-serial-1"),
|
detail("record-2", "file-serial-2"),
|
detail("record-1", "file-serial-1")));
|
|
service(shenqingMapper, guidangMapper, jiluMapper, wenjianMapper).tongguo("flow-1", "task-1");
|
|
ArgumentCaptor<Wrapper<DmsJiluDayinLiushuiEntity>> updateCaptor = ArgumentCaptor.forClass(Wrapper.class);
|
verify(jiluMapper).update(isNull(), updateCaptor.capture());
|
LambdaUpdateWrapper<?> update = (LambdaUpdateWrapper<?>) updateCaptor.getValue();
|
assertTrue(update.getSqlSet().contains("is_guidang"));
|
assertTrue(update.getParamNameValuePairs().containsValue(1));
|
assertTrue(update.getSqlSegment().contains("f_id"));
|
assertTrue(update.getSqlSegment().contains("f_delete_mark"));
|
verify(wenjianMapper).archivePrintRecords(Arrays.asList("file-serial-1", "file-serial-2"));
|
}
|
|
@Test
|
void ignoresBlankSerialFields() throws Exception {
|
DmsDanganCundangShenqingMapper shenqingMapper = mock(DmsDanganCundangShenqingMapper.class);
|
DmsDanganCundangShenqingGuidangMapper guidangMapper =
|
mock(DmsDanganCundangShenqingGuidangMapper.class);
|
DmsJiluDayinLiushuiMapper jiluMapper = mock(DmsJiluDayinLiushuiMapper.class);
|
DmsWenjianFenfaMapper wenjianMapper = mock(DmsWenjianFenfaMapper.class);
|
when(shenqingMapper.selectList(any())).thenReturn(Collections.singletonList(application("apply-1")));
|
when(guidangMapper.selectList(any())).thenReturn(Collections.singletonList(detail(" ", null)));
|
|
service(shenqingMapper, guidangMapper, jiluMapper, wenjianMapper).tongguo("flow-1", "task-1");
|
|
verify(jiluMapper, never()).update(any(), any());
|
verify(wenjianMapper, never()).archivePrintRecords(any());
|
}
|
|
@Test
|
void rejectsAnUnknownApprovalFlow() {
|
DmsDanganCundangShenqingMapper shenqingMapper = mock(DmsDanganCundangShenqingMapper.class);
|
DmsDanganCundangShenqingGuidangMapper guidangMapper =
|
mock(DmsDanganCundangShenqingGuidangMapper.class);
|
DmsJiluDayinLiushuiMapper jiluMapper = mock(DmsJiluDayinLiushuiMapper.class);
|
DmsWenjianFenfaMapper wenjianMapper = mock(DmsWenjianFenfaMapper.class);
|
when(shenqingMapper.selectList(any())).thenReturn(Collections.emptyList());
|
|
DataException error = assertThrows(DataException.class,
|
() -> service(shenqingMapper, guidangMapper, jiluMapper, wenjianMapper)
|
.tongguo("flow-1", "task-1"));
|
|
assertEquals("未找到档案存档申请:flow_id=flow-1, task_id=task-1", error.getMessage());
|
verify(guidangMapper, never()).selectList(any());
|
}
|
|
private void initialize(Class<?> entityClass) {
|
if (TableInfoHelper.getTableInfo(entityClass) == null) {
|
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new Configuration(), ""), entityClass);
|
}
|
}
|
|
private DmsDanganCundangShenqingTongguoService service(
|
DmsDanganCundangShenqingMapper shenqingMapper,
|
DmsDanganCundangShenqingGuidangMapper guidangMapper,
|
DmsJiluDayinLiushuiMapper jiluMapper,
|
DmsWenjianFenfaMapper wenjianMapper) {
|
return new DmsDanganCundangShenqingTongguoServiceImpl(
|
shenqingMapper, guidangMapper, jiluMapper, wenjianMapper);
|
}
|
|
private DmsDanganCundangShenqingEntity application(String id) {
|
DmsDanganCundangShenqingEntity application = new DmsDanganCundangShenqingEntity();
|
application.setId(id);
|
application.setFlowId("flow-1");
|
application.setFlowTaskId("task-1");
|
return application;
|
}
|
|
private DmsDanganCundangShenqingGuidangEntity detail(String jiluLiushuiId, String wenjianLiushuiId) {
|
DmsDanganCundangShenqingGuidangEntity detail = new DmsDanganCundangShenqingGuidangEntity();
|
detail.setJiluLiushuiId(jiluLiushuiId);
|
detail.setWenjianLiushuiId(wenjianLiushuiId);
|
return detail;
|
}
|
}
|