Files
qingcheng-houduan/src/test/java/com/greenorange/promotion/junit/PromoCodeServiceImplTest.java

80 lines
2.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//package com.greenorange.promotion.junit;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.greenorange.promotion.model.dto.CommonBatchRequest;
//import com.greenorange.promotion.model.entity.PromoCode;
//import com.greenorange.promotion.service.project.impl.PromoCodeServiceImpl;
//import org.junit.jupiter.api.Test;
//import org.junit.jupiter.api.extension.ExtendWith;
//import org.mockito.InjectMocks;
//import org.mockito.Spy;
//import org.mockito.junit.jupiter.MockitoExtension;
//
//import java.util.Arrays;
//import java.util.Collections;
//import java.util.List;
//
//import static org.junit.jupiter.api.Assertions.assertThrows;
//import static org.junit.jupiter.api.Assertions.assertTrue;
//import static org.mockito.Mockito.*;
//
//@ExtendWith(MockitoExtension.class)
//class PromoCodeServiceImplTest {
//
// @Spy
// @InjectMocks
// private PromoCodeServiceImpl service;
// // Spy + InjectMocks使用真实的 PromoCodeServiceImpl但可以 stub 它的 list(...) 和 removeByIds(...)
//
// /**
// * 当存在状态为“占用”的推广码时,应抛出异常并且不执行删除
// */
// @Test
// void delBatchPromoCode_whenCodesInUse_shouldThrow() {
// // Arrange
// List<Long> ids = Arrays.asList(1L, 2L, 3L);
// CommonBatchRequest req = new CommonBatchRequest();
// req.setIds(ids);
//
// // 模拟 list(...) 返回一个非空列表,表示有正在使用的推广码
// PromoCode inUse = new PromoCode();
// inUse.setId(2L);
// inUse.setPromoCodeStatus(true);
// doReturn(Collections.singletonList(inUse))
// .when(service).list(any(LambdaQueryWrapper.class));
//
// // Act & Assert
// RuntimeException ex = assertThrows(RuntimeException.class,
// () -> service.delBatchPromoCode(req));
// assertTrue(ex.getMessage().contains("当前推广码正在使用中"));
//
// // 验证 removeByIds(...) 从未被调用
// verify(service, never()).removeByIds(anyList());
// }
//
// /**
// * 当所有推广码都未被占用时,应正常调用 removeByIds 删除
// */
// @Test
// void delBatchPromoCode_whenNoCodesInUse_shouldRemove() {
// // Arrange
// List<Long> ids = Arrays.asList(4L, 5L);
// CommonBatchRequest req = new CommonBatchRequest();
// req.setIds(ids);
//
// // 模拟 list(...) 返回空列表,表示无任何占用的推广码
// doReturn(Collections.emptyList())
// .when(service).list(any(LambdaQueryWrapper.class));
//
// // 模拟 removeByIds(...) 返回 true表示删除成功
// doReturn(true).when(service).removeByIds(ids);
//
// // Act
// service.delBatchPromoCode(req);
//
// // Assert
// // 验证 removeByIds(...) 被调用一次,且参数正是传入的 ids
// verify(service, times(1)).removeByIds(ids);
// }
//}