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> 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> 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; } }