package jnpf.dmsService; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import jnpf.dmsEntity.DmsDanganCundangShenqingDanganheEntity; import jnpf.dmsEntity.form.DmsDanganCundangDanganhePrintCallbackForm; import jnpf.dmsMapper.DmsDanganCundangShenqingDanganheMapper; import jnpf.dmsService.impl.DmsDanganCundangDanganhePrintCallbackServiceImpl; 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 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; class DmsDanganCundangDanganhePrintCallbackServiceTest { @BeforeEach void setUp() { if (TableInfoHelper.getTableInfo(DmsDanganCundangShenqingDanganheEntity.class) == null) { TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new Configuration(), ""), DmsDanganCundangShenqingDanganheEntity.class); } } @Test void marksDistinctFIdsAsPrintedInOneUpdate() throws Exception { DmsDanganCundangShenqingDanganheMapper mapper = mock(DmsDanganCundangShenqingDanganheMapper.class); DmsDanganCundangDanganhePrintCallbackService service = new DmsDanganCundangDanganhePrintCallbackServiceImpl(mapper); service.markPrinted(Arrays.asList(item("row-1", "box-1"), item("row-2", "box-1"), item("row-3", "box-2"))); ArgumentCaptor> captor = ArgumentCaptor.forClass(Wrapper.class); verify(mapper).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("shifou_yidayin")); assertTrue(update.getSqlSegment().contains("f_id")); assertTrue(update.getSqlSegment().contains("f_delete_mark")); assertTrue(update.getParamNameValuePairs().containsValue("box-1")); assertTrue(update.getParamNameValuePairs().containsValue("box-2")); assertTrue(update.getParamNameValuePairs().containsValue("yes")); } @Test void rejectsMissingFIdWithoutUpdatingAnything() { DmsDanganCundangShenqingDanganheMapper mapper = mock(DmsDanganCundangShenqingDanganheMapper.class); DmsDanganCundangDanganhePrintCallbackService service = new DmsDanganCundangDanganhePrintCallbackServiceImpl(mapper); DataException error = assertThrows(DataException.class, () -> service.markPrinted(Arrays.asList(item("row-1", " ")))); assertEquals("档案盒打印回调中的f_id不能为空", error.getMessage()); verify(mapper, never()).update(any(), any()); } private DmsDanganCundangDanganhePrintCallbackForm item(String id, String fId) { DmsDanganCundangDanganhePrintCallbackForm item = new DmsDanganCundangDanganhePrintCallbackForm(); item.setId(id); item.setFId(fId); return item; } }