Commit 2575b62a9114ad605d508b175666cf3e23a257ac

Authored by YunaiV
1 parent b4bfffeb

refactor(tests): replace JSON params with MapUtil for better readability in IOT tests

yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/data/action/IotTcpDataRuleActionTest.java
1 package cn.iocoder.yudao.module.iot.service.rule.data.action; 1 package cn.iocoder.yudao.module.iot.service.rule.data.action;
2 2
  3 +import cn.hutool.core.map.MapUtil;
3 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 4 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
4 import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; 5 import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage;
5 import cn.iocoder.yudao.module.iot.dal.dataobject.rule.config.IotDataSinkTcpConfig; 6 import cn.iocoder.yudao.module.iot.dal.dataobject.rule.config.IotDataSinkTcpConfig;
@@ -145,7 +146,7 @@ class IotTcpDataRuleActionTest { @@ -145,7 +146,7 @@ class IotTcpDataRuleActionTest {
145 IotDeviceMessage message = IotDeviceMessage.builder() 146 IotDeviceMessage message = IotDeviceMessage.builder()
146 .deviceId(123L) 147 .deviceId(123L)
147 .method("thing.property.report") 148 .method("thing.property.report")
148 - .params("{\"temperature\": 25.5}") 149 + .params(MapUtil.of("temperature", 25.5))
149 .build(); 150 .build();
150 151
151 // 调用方法 152 // 调用方法
yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/IotSceneRuleTimerConditionIntegrationTest.java
@@ -144,7 +144,8 @@ public class IotSceneRuleTimerConditionIntegrationTest extends BaseMockitoUnitTe @@ -144,7 +144,8 @@ public class IotSceneRuleTimerConditionIntegrationTest extends BaseMockitoUnitTe
144 IotDevicePropertyDO property = new IotDevicePropertyDO(); 144 IotDevicePropertyDO property = new IotDevicePropertyDO();
145 property.setValue(value); 145 property.setValue(value);
146 properties.put(identifier, property); 146 properties.put(identifier, property);
147 - when(devicePropertyService.getLatestDeviceProperties(deviceId)).thenReturn(properties); 147 + // 使用 lenient:当首个条件组就匹配时,后续条件组的设备属性查询会被跳过,此 stubbing 可能未被使用
  148 + lenient().when(devicePropertyService.getLatestDeviceProperties(deviceId)).thenReturn(properties);
148 } 149 }
149 150
150 private void mockDeviceState(Long deviceId, Integer state) { 151 private void mockDeviceState(Long deviceId, Integer state) {
yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDeviceStateConditionMatcherTest.java
1 package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.condition; 1 package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.condition;
2 2
  3 +import cn.hutool.core.map.MapUtil;
  4 +import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum;
3 import cn.iocoder.yudao.module.iot.core.enums.device.IotDeviceStateEnum; 5 import cn.iocoder.yudao.module.iot.core.enums.device.IotDeviceStateEnum;
4 import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; 6 import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage;
5 import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; 7 import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO;
@@ -342,7 +344,8 @@ public class IotDeviceStateConditionMatcherTest extends IotBaseConditionMatcherT @@ -342,7 +344,8 @@ public class IotDeviceStateConditionMatcherTest extends IotBaseConditionMatcherT
342 private IotDeviceMessage createDeviceMessage(Integer deviceState) { 344 private IotDeviceMessage createDeviceMessage(Integer deviceState) {
343 IotDeviceMessage message = new IotDeviceMessage(); 345 IotDeviceMessage message = new IotDeviceMessage();
344 message.setDeviceId(randomLongId()); 346 message.setDeviceId(randomLongId());
345 - message.setParams(deviceState); 347 + message.setMethod(IotDeviceMessageMethodEnum.STATE_UPDATE.getMethod());
  348 + message.setParams(MapUtil.of("state", deviceState));
346 return message; 349 return message;
347 } 350 }
348 351
yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceServiceInvokeTriggerMatcherTest.java
@@ -4,6 +4,7 @@ import cn.hutool.core.map.MapUtil; @@ -4,6 +4,7 @@ import cn.hutool.core.map.MapUtil;
4 import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; 4 import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum;
5 import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; 5 import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage;
6 import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; 6 import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO;
  7 +import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionOperatorEnum;
7 import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; 8 import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum;
8 import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest; 9 import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest;
9 import org.junit.jupiter.api.BeforeEach; 10 import org.junit.jupiter.api.BeforeEach;
@@ -485,7 +486,7 @@ public class IotDeviceServiceInvokeTriggerMatcherTest extends IotBaseConditionMa @@ -485,7 +486,7 @@ public class IotDeviceServiceInvokeTriggerMatcherTest extends IotBaseConditionMa
485 IotSceneRuleDO.Trigger trigger = new IotSceneRuleDO.Trigger(); 486 IotSceneRuleDO.Trigger trigger = new IotSceneRuleDO.Trigger();
486 trigger.setType(IotSceneRuleTriggerTypeEnum.DEVICE_SERVICE_INVOKE.getType()); 487 trigger.setType(IotSceneRuleTriggerTypeEnum.DEVICE_SERVICE_INVOKE.getType());
487 trigger.setIdentifier(serviceIdentifier); 488 trigger.setIdentifier(serviceIdentifier);
488 - trigger.setOperator("=="); // 等于操作符 489 + trigger.setOperator(IotSceneRuleConditionOperatorEnum.EQUALS.getOperator()); // 等于操作符
489 trigger.setValue("auto"); 490 trigger.setValue("auto");
490 491
491 // 调用 492 // 调用
yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceStateUpdateTriggerMatcherTest.java
1 package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger; 1 package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger;
2 2
  3 +import cn.hutool.core.map.MapUtil;
3 import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; 4 import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum;
4 import cn.iocoder.yudao.module.iot.core.enums.device.IotDeviceStateEnum; 5 import cn.iocoder.yudao.module.iot.core.enums.device.IotDeviceStateEnum;
5 import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; 6 import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage;
@@ -248,7 +249,7 @@ public class IotDeviceStateUpdateTriggerMatcherTest extends IotBaseConditionMatc @@ -248,7 +249,7 @@ public class IotDeviceStateUpdateTriggerMatcherTest extends IotBaseConditionMatc
248 IotDeviceMessage message = new IotDeviceMessage(); 249 IotDeviceMessage message = new IotDeviceMessage();
249 message.setDeviceId(randomLongId()); 250 message.setDeviceId(randomLongId());
250 message.setMethod(IotDeviceMessageMethodEnum.STATE_UPDATE.getMethod()); 251 message.setMethod(IotDeviceMessageMethodEnum.STATE_UPDATE.getMethod());
251 - message.setParams(state); 252 + message.setParams(MapUtil.of("state", state));
252 return message; 253 return message;
253 } 254 }
254 255
yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotTimerTriggerMatcherTest.java
@@ -247,7 +247,8 @@ public class IotTimerTriggerMatcherTest extends IotBaseConditionMatcherTest { @@ -247,7 +247,8 @@ public class IotTimerTriggerMatcherTest extends IotBaseConditionMatcherTest {
247 public void testMatches_rangeCronSuccess() { 247 public void testMatches_rangeCronSuccess() {
248 // 准备参数 248 // 准备参数
249 IotDeviceMessage message = createDeviceMessage(); 249 IotDeviceMessage message = createDeviceMessage();
250 - IotSceneRuleDO.Trigger trigger = createValidTrigger("0 0 9-17 * * MON-FRI"); // 工作日9-17点 250 + // quartz cron 中,day-of-month 与 day-of-week 不能同时为 *,需要把其中一个改成 ?
  251 + IotSceneRuleDO.Trigger trigger = createValidTrigger("0 0 9-17 ? * MON-FRI"); // 工作日 9-17 点
251 252
252 // 调用 253 // 调用
253 boolean result = matcher.matches(message, trigger); 254 boolean result = matcher.matches(message, trigger);