package jnpf.dmsService; import jnpf.dmsEntity.fenfa.DmsWenjianDayinRenwuEntity; import jnpf.dmsEntity.fenfa.vo.DmsWenjianHuishouMingxiVO; import jnpf.dmsMapper.DmsWenjianFenfaMapper; import jnpf.exception.DataException; import org.junit.jupiter.api.Test; import org.mockito.InOrder; import java.util.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; class DmsWenjianHuishouPolicyTest { @Test void unsignedCopiesNeedEvidenceAndProcessedCopiesCannotReenter() throws Exception { DmsWenjianHuishouMingxiVO copy = new DmsWenjianHuishouMingxiVO(); for (String status : Arrays.asList("daifafang", "daiqianshou")) { copy.setBizStatus(status); copy.setEarlyRecycleEligible(false); assertThrows(DataException.class, () -> DmsWenjianHuishouPolicy.requireEligible(copy)); copy.setEarlyRecycleEligible(true); DmsWenjianHuishouPolicy.requireEligible(copy); } for (String status : Arrays.asList("yizuofei", "daiguidang", "daixiaohui", "yixiaohui", "yiguidang")) { copy.setBizStatus(status); assertThrows(DataException.class, () -> DmsWenjianHuishouPolicy.requireEligible(copy)); } copy.setBizStatus("daihuishou"); copy.setEarlyRecycleEligible(false); DmsWenjianHuishouPolicy.requireEligible(copy); } @Test void completionLocksDistinctTasksInStableOrder() throws Exception { DmsWenjianFenfaMapper mapper = mock(DmsWenjianFenfaMapper.class); List copies = new ArrayList<>(); for (String task : Arrays.asList("b", "a", "b")) { DmsWenjianHuishouMingxiVO copy = new DmsWenjianHuishouMingxiVO(); copy.setDayinRenwuId(task); copy.setEarlyRecycleEligible(true); copies.add(copy); } when(mapper.selectPrintTaskForUpdate("tenant", "a")).thenReturn(new DmsWenjianDayinRenwuEntity()); when(mapper.selectPrintTaskForUpdate("tenant", "b")).thenReturn(new DmsWenjianDayinRenwuEntity()); Date now = new Date(); DmsWenjianHuishouPolicy.completeDistributions(mapper, "tenant", copies, "user", now); InOrder order = inOrder(mapper); order.verify(mapper).selectPrintTaskForUpdate("tenant", "a"); order.verify(mapper).completeDistributionAfterRecycle("tenant", "a", "user", now); order.verify(mapper).selectPrintTaskForUpdate("tenant", "b"); order.verify(mapper).completeDistributionAfterRecycle("tenant", "b", "user", now); order.verifyNoMoreInteractions(); } }