package cn.iocoder.yudao.module.member.service.address;
|
|
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressCreateReqVO;
|
import cn.iocoder.yudao.module.member.controller.app.address.vo.AppAddressUpdateReqVO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.address.MemberAddressDO;
|
import cn.iocoder.yudao.module.member.dal.mysql.address.MemberAddressMapper;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.context.annotation.Import;
|
|
import jakarta.annotation.Resource;
|
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ADDRESS_NOT_EXISTS;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
|
/**
|
* {@link AddressServiceImpl} 的单元测试类
|
*
|
* @author 芋道源码
|
*/
|
@Import(AddressServiceImpl.class)
|
public class MemberAddressServiceImplTest extends BaseDbUnitTest {
|
|
@Resource
|
private AddressServiceImpl addressService;
|
|
@Resource
|
private MemberAddressMapper addressMapper;
|
|
@Test
|
public void testCreateAddress_success() {
|
// 准备参数
|
AppAddressCreateReqVO reqVO = randomPojo(AppAddressCreateReqVO.class);
|
|
// 调用
|
Long addressId = addressService.createAddress(randomLongId(), reqVO);
|
// 断言
|
assertNotNull(addressId);
|
// 校验记录的属性是否正确
|
MemberAddressDO address = addressMapper.selectById(addressId);
|
assertPojoEquals(reqVO, address);
|
}
|
|
@Test
|
public void testUpdateAddress_success() {
|
// mock 数据
|
MemberAddressDO dbAddress = randomPojo(MemberAddressDO.class);
|
addressMapper.insert(dbAddress);// @Sql: 先插入出一条存在的数据
|
// 准备参数
|
AppAddressUpdateReqVO reqVO = randomPojo(AppAddressUpdateReqVO.class, o -> {
|
o.setId(dbAddress.getId()); // 设置更新的 ID
|
});
|
|
// 调用
|
addressService.updateAddress(dbAddress.getUserId(), reqVO);
|
// 校验是否更新正确
|
MemberAddressDO address = addressMapper.selectById(reqVO.getId()); // 获取最新的
|
assertPojoEquals(reqVO, address);
|
}
|
|
@Test
|
public void testUpdateAddress_notExists() {
|
// 准备参数
|
AppAddressUpdateReqVO reqVO = randomPojo(AppAddressUpdateReqVO.class);
|
|
// 调用, 并断言异常
|
assertServiceException(() -> addressService.updateAddress(randomLongId(), reqVO), ADDRESS_NOT_EXISTS);
|
}
|
|
@Test
|
public void testDeleteAddress_success() {
|
// mock 数据
|
MemberAddressDO dbAddress = randomPojo(MemberAddressDO.class);
|
addressMapper.insert(dbAddress);// @Sql: 先插入出一条存在的数据
|
// 准备参数
|
Long id = dbAddress.getId();
|
|
// 调用
|
addressService.deleteAddress(dbAddress.getUserId(), id);
|
// 校验数据不存在了
|
assertNull(addressMapper.selectById(id));
|
}
|
|
@Test
|
public void testDeleteAddress_notExists() {
|
// 准备参数
|
Long id = randomLongId();
|
|
// 调用, 并断言异常
|
assertServiceException(() -> addressService.deleteAddress(randomLongId(), id), ADDRESS_NOT_EXISTS);
|
}
|
|
}
|