云
2 天以前 87733eb3623593da247c051593d64b8ff9e1d3a4
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/qc/seedquality/SeedQualityWorkflowTest.java
@@ -11,7 +11,9 @@
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.*;
@@ -32,18 +34,28 @@
    }
    @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