| | |
| | | import org.junit.jupiter.api.Test; |
| | | import org.mockito.ArgumentCaptor; |
| | | import org.springframework.test.util.ReflectionTestUtils; |
| | | import org.springframework.transaction.support.TransactionSynchronizationManager; |
| | | import java.util.List; |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | |
| | | import static org.junit.jupiter.api.Assertions.*; |
| | | import static org.mockito.Mockito.*; |
| | |
| | | } |
| | | |
| | | @Test |
| | | void initialApprovalOnlyQueuesRetestAndFailedRetestCanReturnToRetest() { |
| | | void failedProcessStartDoesNotPreventOtherStarts() { |
| | | AtomicBoolean secondStarted = new AtomicBoolean(); |
| | | TransactionSynchronizationManager.initSynchronization(); |
| | | try { |
| | | ReflectionTestUtils.invokeMethod(service, "afterCommit", (Runnable) () -> { |
| | | throw new IllegalStateException("BPM unavailable"); |
| | | }); |
| | | ReflectionTestUtils.invokeMethod(service, "afterCommit", (Runnable) () -> secondStarted.set(true)); |
| | | TransactionSynchronizationManager.getSynchronizations().forEach(sync -> sync.afterCommit()); |
| | | assertTrue(secondStarted.get()); |
| | | } finally { |
| | | TransactionSynchronizationManager.clearSynchronization(); |
| | | } |
| | | } |
| | | |
| | | @Test |
| | | void newDualLineRecordsRequireBpmApproval() { |
| | | when(qualityMapper.selectByIdForUpdate(1L)).thenReturn( |
| | | MesQcSeedQualityDO.builder().id(1L).code("B1").result(2).workflowStatus(20).build(), |
| | | MesQcSeedQualityDO.builder().id(1L).code("B1").result(2).workflowStatus(60).build()); |
| | | service.processApprove(1L, true, ""); |
| | | MesQcSeedQualityDO.builder().id(1L).code("B1").qcLine(1).result(2).workflowStatus(20).build()); |
| | | assertThrows(IllegalArgumentException.class, () -> service.processApprove(1L, true, "")); |
| | | verifyNoInteractions(transactionService); |
| | | service.companyApprove(1L, false, "复检不合格,重新取样"); |
| | | ArgumentCaptor<MesQcSeedQualityDO> update = ArgumentCaptor.forClass(MesQcSeedQualityDO.class); |
| | | verify(qualityMapper, times(2)).updateById(update.capture()); |
| | | assertEquals(10, update.getAllValues().get(0).getWorkflowStatus()); |
| | | assertEquals(10, update.getAllValues().get(1).getWorkflowStatus()); |
| | | verifyNoInteractions(transactionService); |
| | | verify(qualityMapper, never()).updateById(any(MesQcSeedQualityDO.class)); |
| | | } |
| | | |
| | | @Test |