package com.tcm.training.admin.member.service;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.tcm.training.admin.common.PageResponse;
|
import com.tcm.training.admin.live.mapper.ClinicMapper;
|
import com.tcm.training.admin.member.mapper.UserMapper;
|
import com.tcm.training.admin.member.row.UserListRow;
|
import com.tcm.training.admin.member.vo.UserListItemVO;
|
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 org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
import java.time.LocalDateTime;
|
import java.util.Collections;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.isNull;
|
import static org.mockito.Mockito.when;
|
|
@ExtendWith(MockitoExtension.class)
|
class UserAppServiceTest {
|
|
@Mock
|
private UserMapper userMapper;
|
|
@Mock
|
private ClinicMapper clinicMapper;
|
|
@Mock
|
private BCryptPasswordEncoder passwordEncoder;
|
|
@InjectMocks
|
private UserAppService userAppService;
|
|
@Test
|
void pageShouldMapMemberExpireAtForMemberUserQuery() {
|
LocalDateTime memberExpireAt = LocalDateTime.of(2026, 6, 8, 3, 15);
|
UserListRow row = new UserListRow();
|
row.setId(11L);
|
row.setNickname("王美丽");
|
row.setPhone("14712346905");
|
row.setAvatar("https://cdn.test/avatar.png");
|
row.setIsMember(1);
|
row.setMemberExpireAt(memberExpireAt);
|
|
IPage<UserListRow> pageResult = new Page<UserListRow>(1, 10, 1);
|
pageResult.setRecords(Collections.singletonList(row));
|
when(userMapper.selectUserPage(
|
any(),
|
eq("王美丽"),
|
eq("14712346905"),
|
isNull(),
|
isNull(),
|
isNull(),
|
eq("ACTIVE"),
|
isNull(),
|
isNull(),
|
isNull(),
|
isNull()
|
)).thenReturn(pageResult);
|
|
PageResponse<UserListItemVO> result = userAppService.page(
|
1, 10, " 王美丽 ", "14712346905", null, null, null,
|
"active", null, null, null, null
|
);
|
|
assertEquals(1, result.getList().size());
|
assertEquals(memberExpireAt, result.getList().get(0).getMemberExpireAt());
|
assertEquals(Boolean.TRUE, result.getList().get(0).getIsMember());
|
}
|
|
@Test
|
void pageShouldRejectInvalidMemberStatus() {
|
IllegalArgumentException error = assertThrows(
|
IllegalArgumentException.class,
|
() -> userAppService.page(
|
1, 10, null, null, null, null, null,
|
"INVALID", null, null, null, null
|
)
|
);
|
|
assertEquals("会员状态筛选不合法", error.getMessage());
|
}
|
}
|