test: Add CleanOrderScenarioIT and finalize test coverage
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

This commit is contained in:
lzh
2026-01-25 22:33:16 +08:00
parent a3909a0482
commit d9ba73a4bc

View File

@@ -0,0 +1,130 @@
package com.viewsh.module.ops.environment.manual;
import com.viewsh.module.ops.environment.integration.dto.*;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* 本地全链路集成测试(客户端模式 - 仅发送消息)
* <p>
* 前置条件:
* 1. 本地或远程的 Ops 服务已启动。
* 2. application.yml 配置正确连接到 RocketMQ。
*/
@Disabled("Manual integration test, requires external RocketMQ")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = CleanOrderScenarioTest.TestApplication.class)
public class CleanOrderScenarioTest {
@SpringBootApplication(excludeName = {
"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration",
"org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration",
"com.mzt.logapi.starter.configuration.LogRecordProxyAutoConfiguration"
})
// 排除 Ops 模块的业务 Bean防止重复启动或资源冲突
@ComponentScan(
basePackages = {"com.viewsh.framework"},
excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = "com.viewsh.module.*")
)
static class TestApplication {
}
@Autowired
private RocketMQTemplate rocketMQTemplate;
private final Long AREA_ID = 101L;
private final Long DEVICE_ID = 5001L;
private final String DEVICE_KEY = "badge-01";
private final String BEACON_MAC = "F0:C8:60:1D:10:BB";
private final Long ORDER_ID_FROM_STEP1 = 0L;
@Test
void step1_triggerCreate() {
String eventId = UUID.randomUUID().toString();
CleanOrderCreateEventDTO event = new CleanOrderCreateEventDTO();
event.setEventId(eventId);
event.setAreaId(AREA_ID);
event.setTriggerSource("IOT_TRAFFIC");
event.setTriggerDeviceId(8001L);
event.setTriggerDeviceKey("traffic-cam-01");
Map<String, Object> data = new HashMap<>();
data.put("actualCount", 150);
data.put("baseValue", 100);
event.setTriggerData(data);
System.out.println(">>> 发送创建消息 start...");
rocketMQTemplate.convertAndSend("ops-order-create", event);
System.out.println(">>> 发送创建消息成功: " + eventId);
}
@Test
void step2_confirm() {
checkOrderId();
CleanOrderConfirmEventDTO event = new CleanOrderConfirmEventDTO();
event.setEventId(UUID.randomUUID().toString());
event.setOrderId(ORDER_ID_FROM_STEP1);
event.setDeviceId(DEVICE_ID);
event.setDeviceKey(DEVICE_KEY);
System.out.println(">>> 发送确认消息...");
rocketMQTemplate.convertAndSend("ops-order-confirm", event);
System.out.println(">>> 发送确认消息成功");
}
@Test
void step3_arrive() {
checkOrderId();
CleanOrderArriveEventDTO event = new CleanOrderArriveEventDTO();
event.setEventId(UUID.randomUUID().toString());
event.setOrderId(ORDER_ID_FROM_STEP1);
event.setDeviceId(DEVICE_ID);
event.setDeviceKey(DEVICE_KEY);
event.setAreaId(AREA_ID);
event.setTriggerSource("IOT_BEACON");
Map<String, Object> data = new HashMap<>();
data.put("beaconMac", BEACON_MAC);
event.setTriggerData(data);
System.out.println(">>> 发送到岗消息...");
rocketMQTemplate.convertAndSend("ops-order-arrive", event);
System.out.println(">>> 发送到岗消息成功");
}
@Test
void step4_complete() {
checkOrderId();
CleanOrderCompleteEventDTO event = new CleanOrderCompleteEventDTO();
event.setEventId(UUID.randomUUID().toString());
event.setOrderId(ORDER_ID_FROM_STEP1);
event.setDeviceId(DEVICE_ID);
event.setAreaId(AREA_ID);
event.setTriggerSource("IOT_SIGNAL_LOSS");
Map<String, Object> data = new HashMap<>();
data.put("durationMs", 1800000); // 30 mins
event.setTriggerData(data);
System.out.println(">>> 发送完成消息...");
rocketMQTemplate.convertAndSend("ops-order-complete", event);
System.out.println(">>> 发送完成消息成功");
}
private void checkOrderId() {
if (ORDER_ID_FROM_STEP1 == 0L) {
throw new RuntimeException("请先运行 step1并将生成的 OrderId 填入 ORDER_ID_FROM_STEP1 常量!");
}
}
}