Commit 2575b62a9114ad605d508b175666cf3e23a257ac
1 parent
b4bfffeb
refactor(tests): replace JSON params with MapUtil for better readability in IOT tests
Showing
6 changed files
with
14 additions
and
6 deletions
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); |