package com.tourguide.modules.user.service;
|
|
import com.tourguide.common.exception.BusinessException;
|
import com.tourguide.modules.operation.mapper.OperationCityMapper;
|
import com.tourguide.modules.operation.mapper.OperationScenicSpotMapper;
|
import com.tourguide.modules.user.dto.GuideUserResponse;
|
import com.tourguide.modules.user.entity.GuideUser;
|
import com.tourguide.modules.user.mapper.GuideAutoDisableConfigMapper;
|
import com.tourguide.modules.user.mapper.GuideApplicationMapper;
|
import com.tourguide.modules.user.mapper.GuideScenicConfigMapper;
|
import com.tourguide.modules.user.mapper.GuideTeamMapper;
|
import com.tourguide.modules.user.mapper.GuideUserMapper;
|
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.when;
|
|
class GuideUserServiceAdminAvatarTest {
|
private GuideUserMapper userMapper;
|
private GuideUserService service;
|
|
@BeforeEach
|
void setUp() {
|
userMapper = mock(GuideUserMapper.class);
|
service = new GuideUserService(
|
userMapper,
|
mock(GuideTeamMapper.class),
|
mock(GuideApplicationMapper.class),
|
mock(GuideScenicConfigMapper.class),
|
mock(GuideAutoDisableConfigMapper.class),
|
mock(OperationScenicSpotMapper.class),
|
mock(OperationCityMapper.class),
|
mock(PasswordEncoder.class));
|
}
|
|
@Test
|
void adminShouldUpdateAvatarForDisabledGuide() {
|
GuideUser user = new GuideUser();
|
user.setId(12L);
|
user.setStatus(GuideUserService.STATUS_DISABLED);
|
when(userMapper.selectById(12L)).thenReturn(user);
|
|
GuideUserResponse response = service.updateAvatarByAdmin(12L, "/uploads/avatars/guide.png");
|
|
assertThat(response.getAvatar()).isEqualTo("/uploads/avatars/guide.png");
|
verify(userMapper).updateById(user);
|
}
|
|
@Test
|
void adminShouldUpdateDocumentForDisabledGuide() {
|
GuideUser user = new GuideUser();
|
user.setId(12L);
|
user.setStatus(GuideUserService.STATUS_DISABLED);
|
when(userMapper.selectById(12L)).thenReturn(user);
|
|
String url = service.updateDocumentByAdmin(
|
12L, "guideCertificateUrl", "/uploads/guide-applications/guide.png");
|
|
assertThat(url).isEqualTo("/uploads/guide-applications/guide.png");
|
assertThat(user.getGuideCertificateUrl()).isEqualTo(url);
|
verify(userMapper).updateById(user);
|
}
|
|
@Test
|
void adminShouldRejectUnsupportedDocumentType() {
|
GuideUser user = new GuideUser();
|
user.setId(12L);
|
when(userMapper.selectById(12L)).thenReturn(user);
|
|
assertThat(service.supportsDocumentType("unknownUrl")).isFalse();
|
assertThatThrownBy(() -> service.updateDocumentByAdmin(
|
12L, "unknownUrl", "/uploads/guide-applications/unknown.png"))
|
.isInstanceOf(BusinessException.class)
|
.hasMessage("不支持的证件类型");
|
verify(userMapper, never()).updateById(user);
|
}
|
}
|