yeg
2026-09-02 4eaa4be4d2cbd2aa49d36a313ce71ad3e743db4a
ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TBatteryGroupServiceImplTest.java
@@ -9,6 +9,7 @@
import static org.mockito.Mockito.when;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -18,6 +19,8 @@
import org.mockito.junit.jupiter.MockitoExtension;
import com.ruoyi.system.domain.TBatteryGroup;
import com.ruoyi.system.domain.TBatteryGroupBattery;
import com.ruoyi.system.domain.TBatteryGroupRelationField;
import com.ruoyi.system.domain.TBatteryGroupTemplate;
import com.ruoyi.system.mapper.TBatteryGroupMapper;
/** 电池组 Service 单元测试。 */
@@ -26,6 +29,24 @@
{
    @Mock
    private TBatteryGroupMapper batteryGroupMapper;
    @Test
    void listShouldIncludeSharedFieldValues()
    {
        TBatteryGroup group = new TBatteryGroup();
        group.setGroupId(12L);
        TBatteryGroupRelationField relation = new TBatteryGroupRelationField();
        relation.setBatteryGroupFieldId(7L);
        relation.setFieldName("额定容量");
        relation.setFieldValue("72");
        when(batteryGroupMapper.selectBatteryGroupList(any(TBatteryGroup.class))).thenReturn(Collections.singletonList(group));
        when(batteryGroupMapper.selectRelationFields(12L)).thenReturn(Collections.singletonList(relation));
        List<TBatteryGroup> result = batteryGroupService.selectBatteryGroupList(new TBatteryGroup());
        assertEquals("额定容量", result.get(0).getTemplateFields().get(0).getFieldName());
        assertEquals("72", result.get(0).getTemplateFields().get(0).getFieldValue());
    }
    @InjectMocks
    private TBatteryGroupServiceImpl batteryGroupService;
@@ -53,4 +74,68 @@
                .map(TBatteryGroupBattery::getBatteryNo).toList());
        verify(batteryGroupMapper, never()).batchInsertRelationFields(anyList());
    }
    @Test
    void updateShouldPersistStatusAndTemplateFieldValue()
    {
        TBatteryGroup current = new TBatteryGroup();
        current.setGroupId(12L);
        current.setStatus("0");
        TBatteryGroup group = new TBatteryGroup();
        group.setGroupId(12L);
        group.setGroupName("样品组");
        group.setModel("M-01");
        group.setStatus("1");
        group.setBatteryNos(Collections.singletonList("BAT-01"));
        group.setTemplateId(5L);
        TBatteryGroupRelationField relation = new TBatteryGroupRelationField();
        relation.setBatteryGroupFieldId(7L);
        relation.setFieldValue("72");
        relation.setFieldType("number");
        group.setTemplateFieldRelations(Collections.singletonList(relation));
        when(batteryGroupMapper.selectBatteryGroupById(12L)).thenReturn(current);
        when(batteryGroupMapper.countTestingByGroupId(12L)).thenReturn(0);
        when(batteryGroupMapper.selectBatteryByNo("BAT-01", 12L)).thenReturn(null);
        when(batteryGroupMapper.selectTemplate(5L)).thenReturn(new TBatteryGroupTemplate());
        when(batteryGroupMapper.selectTemplateFieldIds(5L)).thenReturn(Collections.singletonList(7L));
        when(batteryGroupMapper.selectValidTemplateFields(5L, Collections.singletonList(7L)))
                .thenReturn(Collections.singletonList(relation));
        when(batteryGroupMapper.updateBatteryGroup(group)).thenReturn(1);
        assertEquals(1, batteryGroupService.updateBatteryGroup(group));
        verify(batteryGroupMapper).updateBatteryGroup(group);
        ArgumentCaptor<List<TBatteryGroupRelationField>> captor = ArgumentCaptor.forClass(List.class);
        verify(batteryGroupMapper).batchInsertRelationFields(captor.capture());
        assertEquals("72", captor.getValue().get(0).getFieldValue());
        assertEquals("1", group.getStatus());
    }
    @Test
    void insertShouldRejectInvalidTypedFieldValue()
    {
        TBatteryGroup group = new TBatteryGroup();
        group.setGroupName("样品组");
        group.setModel("M-01");
        group.setBatteryNos(Collections.singletonList("BAT-01"));
        group.setTemplateId(5L);
        TBatteryGroupRelationField relation = new TBatteryGroupRelationField();
        relation.setBatteryGroupFieldId(7L);
        relation.setFieldValue("72Ah");
        group.setTemplateFieldRelations(Collections.singletonList(relation));
        TBatteryGroupRelationField validField = new TBatteryGroupRelationField();
        validField.setBatteryGroupFieldId(7L);
        validField.setFieldType("number");
        when(batteryGroupMapper.selectBatteryGroupByName("样品组")).thenReturn(null);
        when(batteryGroupMapper.selectBatteryByNo("BAT-01", null)).thenReturn(null);
        when(batteryGroupMapper.selectTemplate(5L)).thenReturn(new TBatteryGroupTemplate());
        when(batteryGroupMapper.selectTemplateFieldIds(5L)).thenReturn(Collections.singletonList(7L));
        when(batteryGroupMapper.selectValidTemplateFields(5L, Collections.singletonList(7L)))
                .thenReturn(Collections.singletonList(validField));
        org.junit.jupiter.api.Assertions.assertThrows(com.ruoyi.common.exception.ServiceException.class,
                () -> batteryGroupService.insertBatteryGroup(group));
        verify(batteryGroupMapper, never()).insertBatteryGroup(any(TBatteryGroup.class));
    }
}