package com.tourguide.modules.user.service; import com.tourguide.modules.user.dto.MiniProfileUpdateRequest; import com.tourguide.modules.user.dto.MiniRealNameUpdateRequest; import com.tourguide.modules.user.dto.MiniUserResponse; import com.tourguide.modules.user.entity.MiniUser; import com.tourguide.modules.user.mapper.MiniUserMapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; class MiniUserServiceProfileTest { private MiniUserMapper userMapper; private MiniUserService userService; private MiniUser user; @BeforeEach void setUp() { userMapper = mock(MiniUserMapper.class); userService = new MiniUserService(userMapper); user = new MiniUser(); user.setId(1L); user.setUsername("wx_user"); user.setNickname("微信用户"); user.setMobile("13800138000"); user.setStatus(1); when(userMapper.selectById(1L)).thenReturn(user); when(userMapper.selectCount(any())).thenReturn(0L); } @Test void shouldUpdateNicknameWithoutChangingWechatMobile() { MiniProfileUpdateRequest request = new MiniProfileUpdateRequest(); request.setNickname(" 新昵称 "); MiniUserResponse response = userService.updateProfile(1L, request); assertThat(response.getNickname()).isEqualTo("新昵称"); assertThat(response.getMobile()).isEqualTo("13800138000"); verify(userMapper).updateById(user); } @Test void shouldTreatNameAndIdCardAsVerified() { MiniRealNameUpdateRequest request = new MiniRealNameUpdateRequest(); request.setRealName(" 张三 "); request.setIdCardNo("11010519491231002x"); MiniUserResponse response = userService.updateRealName(1L, request); assertThat(response.getRealName()).isEqualTo("张三"); assertThat(response.getIdCardNoMasked()).isEqualTo("110105********002X"); assertThat(response.isRealNameVerified()).isTrue(); verify(userMapper).updateById(user); } @Test void shouldUpdateAvatarPath() { MiniUserResponse response = userService.updateAvatar(1L, "/uploads/avatars/avatar.jpg"); assertThat(response.getAvatar()).isEqualTo("/uploads/avatars/avatar.jpg"); verify(userMapper).updateById(user); } }