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());
|
}
|
}
|