package com.ruoyi.system.service.impl;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.when;
|
import java.util.List;
|
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.mockito.InjectMocks;
|
import org.mockito.Mock;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.system.domain.TTestDataRevisionAction;
|
import com.ruoyi.system.domain.TTestDataOverride;
|
import com.ruoyi.system.mapper.TTestMapper;
|
|
/** Ticket26:修订行为按一次提交查询,且三类数据与三类操作均受服务端约束。 */
|
@ExtendWith(MockitoExtension.class)
|
class TestConsoleDataRevisionQueryServiceTest
|
{
|
@Mock
|
private TTestMapper mapper;
|
@InjectMocks
|
private TestConsoleDataServiceImpl service;
|
private TTestDataRevisionAction query;
|
|
@BeforeEach
|
void setUp()
|
{
|
query = new TTestDataRevisionAction();
|
query.setTestId(26L);
|
query.setDataType("STEP");
|
query.setOperationType("EDIT");
|
}
|
|
@Test
|
void delegatesOneActionQueryWithFilters()
|
{
|
TTestDataRevisionAction action = new TTestDataRevisionAction();
|
action.setActionId(101L);
|
when(mapper.selectDataRevisionActions(query)).thenReturn(List.of(action));
|
|
assertEquals(101L, service.selectActions(query).get(0).getActionId());
|
verify(mapper).selectDataRevisionActions(query);
|
}
|
|
@Test
|
void rejectsUnknownDataTypeAndOperation()
|
{
|
query.setDataType("CELL");
|
assertThrows(ServiceException.class, () -> service.selectActions(query));
|
query.setDataType("CYCLE");
|
query.setOperationType("RESTORE");
|
assertThrows(ServiceException.class, () -> service.selectActions(query));
|
}
|
|
@Test
|
void returnsReadOnlyActionDetail()
|
{
|
TTestDataRevisionAction action = new TTestDataRevisionAction();
|
action.setActionId(99L);
|
action.setOperationType("DELETE");
|
when(mapper.selectDataRevisionActionById(99L)).thenReturn(action);
|
|
assertEquals("DELETE", service.selectActionById(99L).getOperationType());
|
assertThrows(ServiceException.class, () -> service.selectActionById(0L));
|
}
|
|
@Test
|
void rejectsIdentitySummaryThatDoesNotMatchOverrides()
|
{
|
TTestDataRevisionAction action = new TTestDataRevisionAction();
|
action.setTestId(26L); action.setDataType("REALTIME"); action.setOperationType("DELETE");
|
action.setScopeSummary("删除一条实时数据"); action.setIdentitySummary("[\"record-1\"]");
|
action.setReason("异常点"); action.setOperatorName("tester");
|
TTestDataOverride override = new TTestDataOverride();
|
override.setStableIdentity("record-2"); override.setDeleted(true);
|
|
assertThrows(ServiceException.class,
|
() -> service.submitAction(action, List.of(override), List.of(), List.of()));
|
}
|
|
@Test
|
void rejectsIdentitySummaryWithExtraIdentity()
|
{
|
TTestDataRevisionAction action = new TTestDataRevisionAction();
|
action.setTestId(26L); action.setDataType("STEP"); action.setOperationType("DELETE");
|
action.setScopeSummary("删除一条工步数据"); action.setIdentitySummary("[\"step:1:2:3:4\",\"step:1:2:3:5\"]");
|
action.setReason("异常工步"); action.setOperatorName("tester");
|
TTestDataOverride override = new TTestDataOverride();
|
override.setStableIdentity("step:1:2:3:4"); override.setDeleted(true);
|
|
assertThrows(ServiceException.class,
|
() -> service.submitAction(action, List.of(override), List.of(), List.of()));
|
}
|
|
@Test
|
void keepsOriginalSamplesWhenDeletingStepAggregate()
|
{
|
TTestDataRevisionAction action = new TTestDataRevisionAction();
|
action.setTestId(26L); action.setDataType("STEP"); action.setOperationType("DELETE");
|
action.setScopeSummary("删除一条工步数据"); action.setIdentitySummary("[\"step:1:2:3:4\"]");
|
action.setReason("异常工步"); action.setOperatorName("tester");
|
TTestDataOverride override = new TTestDataOverride();
|
override.setStableIdentity("step:1:2:3:4"); override.setDeleted(true);
|
service.submitAction(action, List.of(override), List.of(), List.of());
|
|
verify(mapper).insertDataRevisionAction(action);
|
verify(mapper).upsertDataOverride(override);
|
org.mockito.Mockito.verifyNoMoreInteractions(mapper);
|
}
|
}
|