zjk
2026-09-24 4c4b36e7337385ff15ff66a0ad487cdffaf9c86b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.tcm.training.admin.system.service;
 
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.tcm.training.admin.app.system.controller.AppStartupPageController;
import com.tcm.training.admin.app.system.vo.AppStartupPageVO;
import com.tcm.training.admin.system.dto.SystemSettingsSaveRequest;
import com.tcm.training.admin.system.entity.SystemSettings;
import com.tcm.training.admin.system.mapper.SystemSettingsMapper;
import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.junit.jupiter.api.BeforeAll;
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 static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
 
@ExtendWith(MockitoExtension.class)
class SystemSettingsAppServiceTest {
 
    @BeforeAll
    static void initLambdaCache() {
        TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), SystemSettings.class);
    }
 
    @Mock
    private SystemSettingsMapper mapper;
 
    @InjectMocks
    private SystemSettingsAppService service;
 
    @Test
    void publicStartupPageShouldDefaultToDisabledWithoutSettingsOrImage() {
        AppStartupPageController controller = new AppStartupPageController(service);
        AppStartupPageVO empty = controller.current().getData();
        assertFalse(empty.isEnabled());
        assertEquals("", empty.getImageUrl());
 
        SystemSettings settings = new SystemSettings();
        settings.setStartupPageEnabled(true);
        settings.setStartupPageImageUrl("  ");
        when(mapper.selectOne(any())).thenReturn(settings);
        AppStartupPageVO missingImage = controller.current().getData();
        assertFalse(missingImage.isEnabled());
        assertEquals("", missingImage.getImageUrl());
 
        settings.setStartupPageImageUrl(" https://example.com/start.png ");
        AppStartupPageVO enabled = controller.current().getData();
        assertTrue(enabled.isEnabled());
        assertEquals("https://example.com/start.png", enabled.getImageUrl());
    }
 
    @Test
    void saveShouldRejectEnabledPageWithoutImage() {
        SystemSettingsSaveRequest request = new SystemSettingsSaveRequest();
        request.setStartupPageEnabled(true);
        request.setStartupPageImageUrl("  ");
        assertThrows(IllegalArgumentException.class, () -> service.saveCurrent(request));
        verify(mapper, never()).insert(any());
    }
 
    @Test
    void saveShouldPersistDisabledDefaultAndEmptyImage() {
        SystemSettingsSaveRequest request = new SystemSettingsSaveRequest();
        request.setServicePhone(" 123 ");
        request.setServiceOnlineTime(" 09:00-18:00 ");
        request.setBackupCycleDays(7);
        request.setMemberExpireRemindDays(3);
 
        service.saveCurrent(request);
 
        org.mockito.ArgumentCaptor<SystemSettings> captor = org.mockito.ArgumentCaptor.forClass(SystemSettings.class);
        verify(mapper).insert(captor.capture());
        assertFalse(captor.getValue().getStartupPageEnabled());
        assertEquals("", captor.getValue().getStartupPageImageUrl());
    }
}