package jnpf.dmsService;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
import jnpf.dmsEntity.DmsDanganCundangShenqingDanganheEntity;
|
import jnpf.dmsEntity.DmsDanganJieyueFuyinShenqingEntity;
|
import jnpf.dmsEntity.DmsDanganJieyueFuyinShenqingZixiangEntity;
|
import jnpf.dmsMapper.DmsDanganCundangShenqingDanganheMapper;
|
import jnpf.dmsMapper.DmsDanganJieyueFuyinShenqingMapper;
|
import jnpf.dmsMapper.DmsDanganJieyueFuyinShenqingZixiangMapper;
|
import jnpf.dmsService.impl.DmsDanganJieyueFuyinShenqingTongguoServiceImpl;
|
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.Date;
|
|
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 DmsDanganJieyueFuyinShenqingTongguoServiceTest {
|
|
@BeforeEach
|
void setUp() {
|
initialize(DmsDanganJieyueFuyinShenqingEntity.class);
|
initialize(DmsDanganJieyueFuyinShenqingZixiangEntity.class);
|
initialize(DmsDanganCundangShenqingDanganheEntity.class);
|
}
|
|
@Test
|
void assignsEverySelectedDanganheToTheApprovedApplication() throws Exception {
|
DmsDanganJieyueFuyinShenqingMapper shenqingMapper = mock(DmsDanganJieyueFuyinShenqingMapper.class);
|
DmsDanganJieyueFuyinShenqingZixiangMapper zixiangMapper = mock(DmsDanganJieyueFuyinShenqingZixiangMapper.class);
|
DmsDanganCundangShenqingDanganheMapper danganheMapper = mock(DmsDanganCundangShenqingDanganheMapper.class);
|
when(shenqingMapper.selectList(any())).thenReturn(Arrays.asList(application("loan-1")));
|
when(zixiangMapper.selectList(any())).thenReturn(Arrays.asList(detail("box-1"), detail("box-2")));
|
when(danganheMapper.update(isNull(), any())).thenReturn(2);
|
|
service(shenqingMapper, zixiangMapper, danganheMapper).tongguo("flow-1", "task-1");
|
|
ArgumentCaptor<Wrapper<DmsDanganCundangShenqingDanganheEntity>> captor = ArgumentCaptor.forClass(Wrapper.class);
|
verify(danganheMapper).update(isNull(), captor.capture());
|
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<?> update =
|
(com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<?>) captor.getValue();
|
assertTrue(update.getSqlSet().contains("jieyue_id"));
|
assertTrue(update.getParamNameValuePairs().containsValue("loan-1"));
|
|
ArgumentCaptor<Wrapper<DmsDanganJieyueFuyinShenqingZixiangEntity>> detailCaptor = ArgumentCaptor.forClass(Wrapper.class);
|
verify(zixiangMapper).update(isNull(), detailCaptor.capture());
|
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<?> detailUpdate =
|
(com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<?>) detailCaptor.getValue();
|
assertTrue(detailUpdate.getSqlSet().contains("shifou_yitongguo"));
|
assertTrue(detailUpdate.getSqlSet().contains("shenqing_ren"));
|
assertTrue(detailUpdate.getSqlSet().contains("shenqing_riqi"));
|
assertTrue(detailUpdate.getSqlSet().contains("shenqing_bumen"));
|
assertTrue(detailUpdate.getParamNameValuePairs().containsValue("yes"));
|
assertTrue(detailUpdate.getParamNameValuePairs().containsValue("applicant-1"));
|
assertTrue(detailUpdate.getParamNameValuePairs().containsValue("department-1"));
|
}
|
|
@Test
|
void rejectsBlankDanganheIdBeforeUpdatingAnything() {
|
DmsDanganJieyueFuyinShenqingMapper shenqingMapper = mock(DmsDanganJieyueFuyinShenqingMapper.class);
|
DmsDanganJieyueFuyinShenqingZixiangMapper zixiangMapper = mock(DmsDanganJieyueFuyinShenqingZixiangMapper.class);
|
DmsDanganCundangShenqingDanganheMapper danganheMapper = mock(DmsDanganCundangShenqingDanganheMapper.class);
|
when(shenqingMapper.selectList(any())).thenReturn(Arrays.asList(application("loan-1")));
|
when(zixiangMapper.selectList(any())).thenReturn(Arrays.asList(detail(" ")));
|
|
DataException error = assertThrows(DataException.class,
|
() -> service(shenqingMapper, zixiangMapper, danganheMapper).tongguo("flow-1", "task-1"));
|
|
assertEquals("档案盒借阅复印申请明细缺少档案盒ID(danganhe_id)", error.getMessage());
|
verify(danganheMapper, never()).update(any(), any());
|
}
|
|
private void initialize(Class<?> entityClass) {
|
if (TableInfoHelper.getTableInfo(entityClass) == null) {
|
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new Configuration(), ""), entityClass);
|
}
|
}
|
|
private DmsDanganJieyueFuyinShenqingTongguoService service(
|
DmsDanganJieyueFuyinShenqingMapper shenqingMapper,
|
DmsDanganJieyueFuyinShenqingZixiangMapper zixiangMapper,
|
DmsDanganCundangShenqingDanganheMapper danganheMapper) {
|
return new DmsDanganJieyueFuyinShenqingTongguoServiceImpl(shenqingMapper, zixiangMapper, danganheMapper);
|
}
|
|
private DmsDanganJieyueFuyinShenqingEntity application(String id) {
|
DmsDanganJieyueFuyinShenqingEntity application = new DmsDanganJieyueFuyinShenqingEntity();
|
application.setId(id);
|
application.setFlowId("flow-1");
|
application.setFlowTaskId("task-1");
|
application.setShenqingRen("applicant-1");
|
application.setShenqingRiqi(new Date(0));
|
application.setShenqingBumen("department-1");
|
return application;
|
}
|
|
private DmsDanganJieyueFuyinShenqingZixiangEntity detail(String danganheId) {
|
DmsDanganJieyueFuyinShenqingZixiangEntity detail = new DmsDanganJieyueFuyinShenqingZixiangEntity();
|
detail.setDanganheId(danganheId);
|
return detail;
|
}
|
}
|