From 057f924bd165d3253e06bea213321b77e2b983c8 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Fri, 19 Sep 2025 10:59:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E3=80=90IoT=20=E7=89=A9=E8=81=94?= =?UTF-8?q?=E7=BD=91=E3=80=91=E7=BB=9F=E4=B8=80=E5=9C=BA=E6=99=AF=E8=81=94?= =?UTF-8?q?=E5=8A=A8=20=E2=80=98IoT=E2=80=99=20=E5=89=8D=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...va => IotCurrentTimeConditionMatcher.java} | 3 +- ...=> IotDevicePropertyConditionMatcher.java} | 2 +- ...va => IotDeviceStateConditionMatcher.java} | 2 +- ... => IotDeviceEventPostTriggerMatcher.java} | 2 +- ... IotDevicePropertyPostTriggerMatcher.java} | 2 +- ...IotDeviceServiceInvokeTriggerMatcher.java} | 2 +- ...> IotDeviceStateUpdateTriggerMatcher.java} | 2 +- ...tcher.java => IotTimerTriggerMatcher.java} | 2 +- ....java => IotBaseConditionMatcherTest.java} | 3 +- ...> IotCurrentTimeConditionMatcherTest.java} | 10 +- ...otDevicePropertyConditionMatcherTest.java} | 10 +- ...> IotDeviceStateConditionMatcherTest.java} | 10 +- ...IotDeviceEventPostTriggerMatcherTest.java} | 10 +- ...DevicePropertyPostTriggerMatcherTest.java} | 10 +- ...eviceServiceInvokeTriggerMatcherTest.java} | 10 +- ...tDeviceStateUpdateTriggerMatcherTest.java} | 22 +-- ...t.java => IotTimerTriggerMatcherTest.java} | 10 +- .../timer/IotSceneRuleTimerHandlerTest.java | 126 ++++++++++++++++++ 18 files changed, 175 insertions(+), 63 deletions(-) rename yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/{CurrentTimeConditionMatcher.java => IotCurrentTimeConditionMatcher.java} (98%) rename yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/{DevicePropertyConditionMatcher.java => IotDevicePropertyConditionMatcher.java} (96%) rename yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/{DeviceStateConditionMatcher.java => IotDeviceStateConditionMatcher.java} (96%) rename yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{DeviceEventPostTriggerMatcher.java => IotDeviceEventPostTriggerMatcher.java} (97%) rename yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{DevicePropertyPostTriggerMatcher.java => IotDevicePropertyPostTriggerMatcher.java} (97%) rename yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{DeviceServiceInvokeTriggerMatcher.java => IotDeviceServiceInvokeTriggerMatcher.java} (96%) rename yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{DeviceStateUpdateTriggerMatcher.java => IotDeviceStateUpdateTriggerMatcher.java} (97%) rename yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{TimerTriggerMatcher.java => IotTimerTriggerMatcher.java} (96%) rename yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/{BaseMatcherTest.java => IotBaseConditionMatcherTest.java} (88%) rename yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/{CurrentTimeConditionMatcherTest.java => IotCurrentTimeConditionMatcherTest.java} (96%) rename yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/{DevicePropertyConditionMatcherTest.java => IotDevicePropertyConditionMatcherTest.java} (97%) rename yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/{DeviceStateConditionMatcherTest.java => IotDeviceStateConditionMatcherTest.java} (97%) rename yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{DeviceEventPostTriggerMatcherTest.java => IotDeviceEventPostTriggerMatcherTest.java} (97%) rename yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{DevicePropertyPostTriggerMatcherTest.java => IotDevicePropertyPostTriggerMatcherTest.java} (96%) rename yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{DeviceServiceInvokeTriggerMatcherTest.java => IotDeviceServiceInvokeTriggerMatcherTest.java} (97%) rename yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{DeviceStateUpdateTriggerMatcherTest.java => IotDeviceStateUpdateTriggerMatcherTest.java} (92%) rename yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/{TimerTriggerMatcherTest.java => IotTimerTriggerMatcherTest.java} (96%) create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/timer/IotSceneRuleTimerHandlerTest.java diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotCurrentTimeConditionMatcher.java similarity index 98% rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcher.java rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotCurrentTimeConditionMatcher.java index cb85f36203..2083bebac9 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotCurrentTimeConditionMatcher.java @@ -16,7 +16,6 @@ import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.List; -// TODO @puhui999:是不是 IoT 的前缀,都加下哈; /** * 当前时间条件匹配器:处理时间相关的子条件匹配逻辑 * @@ -24,7 +23,7 @@ import java.util.List; */ @Component @Slf4j -public class CurrentTimeConditionMatcher implements IotSceneRuleConditionMatcher { +public class IotCurrentTimeConditionMatcher implements IotSceneRuleConditionMatcher { /** * 时间格式化器 - HH:mm:ss diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDevicePropertyConditionMatcher.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcher.java rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDevicePropertyConditionMatcher.java index f4316c0b5d..c130c55438 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDevicePropertyConditionMatcher.java @@ -15,7 +15,7 @@ import org.springframework.stereotype.Component; * @author HUIHUI */ @Component -public class DevicePropertyConditionMatcher implements IotSceneRuleConditionMatcher { +public class IotDevicePropertyConditionMatcher implements IotSceneRuleConditionMatcher { @Override public IotSceneRuleConditionTypeEnum getSupportedConditionType() { diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DeviceStateConditionMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDeviceStateConditionMatcher.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DeviceStateConditionMatcher.java rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDeviceStateConditionMatcher.java index ceb1ee8c8b..232812270f 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DeviceStateConditionMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDeviceStateConditionMatcher.java @@ -13,7 +13,7 @@ import org.springframework.stereotype.Component; * @author HUIHUI */ @Component -public class DeviceStateConditionMatcher implements IotSceneRuleConditionMatcher { +public class IotDeviceStateConditionMatcher implements IotSceneRuleConditionMatcher { @Override public IotSceneRuleConditionTypeEnum getSupportedConditionType() { diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceEventPostTriggerMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceEventPostTriggerMatcher.java similarity index 97% rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceEventPostTriggerMatcher.java rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceEventPostTriggerMatcher.java index 2a843d1c2c..825b5eae1d 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceEventPostTriggerMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceEventPostTriggerMatcher.java @@ -15,7 +15,7 @@ import org.springframework.stereotype.Component; * @author HUIHUI */ @Component -public class DeviceEventPostTriggerMatcher implements IotSceneRuleTriggerMatcher { +public class IotDeviceEventPostTriggerMatcher implements IotSceneRuleTriggerMatcher { @Override public IotSceneRuleTriggerTypeEnum getSupportedTriggerType() { diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DevicePropertyPostTriggerMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDevicePropertyPostTriggerMatcher.java similarity index 97% rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DevicePropertyPostTriggerMatcher.java rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDevicePropertyPostTriggerMatcher.java index fdaf68e3f1..27cb02a1a5 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DevicePropertyPostTriggerMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDevicePropertyPostTriggerMatcher.java @@ -14,7 +14,7 @@ import org.springframework.stereotype.Component; * @author HUIHUI */ @Component -public class DevicePropertyPostTriggerMatcher implements IotSceneRuleTriggerMatcher { +public class IotDevicePropertyPostTriggerMatcher implements IotSceneRuleTriggerMatcher { @Override public IotSceneRuleTriggerTypeEnum getSupportedTriggerType() { diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceServiceInvokeTriggerMatcher.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcher.java rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceServiceInvokeTriggerMatcher.java index 2c357fb1e2..d3a73f806b 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceServiceInvokeTriggerMatcher.java @@ -14,7 +14,7 @@ import org.springframework.stereotype.Component; * @author HUIHUI */ @Component -public class DeviceServiceInvokeTriggerMatcher implements IotSceneRuleTriggerMatcher { +public class IotDeviceServiceInvokeTriggerMatcher implements IotSceneRuleTriggerMatcher { @Override public IotSceneRuleTriggerTypeEnum getSupportedTriggerType() { diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceStateUpdateTriggerMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceStateUpdateTriggerMatcher.java similarity index 97% rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceStateUpdateTriggerMatcher.java rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceStateUpdateTriggerMatcher.java index b51716f4e3..6b8c73a501 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceStateUpdateTriggerMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceStateUpdateTriggerMatcher.java @@ -14,7 +14,7 @@ import org.springframework.stereotype.Component; * @author HUIHUI */ @Component -public class DeviceStateUpdateTriggerMatcher implements IotSceneRuleTriggerMatcher { +public class IotDeviceStateUpdateTriggerMatcher implements IotSceneRuleTriggerMatcher { @Override public IotSceneRuleTriggerTypeEnum getSupportedTriggerType() { diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/TimerTriggerMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotTimerTriggerMatcher.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/TimerTriggerMatcher.java rename to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotTimerTriggerMatcher.java index 34cc59507d..f980c2471b 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/TimerTriggerMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotTimerTriggerMatcher.java @@ -16,7 +16,7 @@ import org.springframework.stereotype.Component; * @author HUIHUI */ @Component -public class TimerTriggerMatcher implements IotSceneRuleTriggerMatcher { +public class IotTimerTriggerMatcher implements IotSceneRuleTriggerMatcher { @Override public IotSceneRuleTriggerTypeEnum getSupportedTriggerType() { diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/BaseMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotBaseConditionMatcherTest.java similarity index 88% rename from yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/BaseMatcherTest.java rename to yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotBaseConditionMatcherTest.java index b53e48da3a..5be63b57d2 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/BaseMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotBaseConditionMatcherTest.java @@ -6,7 +6,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; -// TODO @puhui999:建议改成 IotBaseConditionMatcherTest /** * Matcher 测试基类 * 提供通用的 Spring 测试配置 @@ -14,7 +13,7 @@ import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; * @author HUIHUI */ @SpringJUnitConfig -public abstract class BaseMatcherTest { +public abstract class IotBaseConditionMatcherTest { /** * 注入一下 SpringUtil,解析 EL 表达式时需要 diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotCurrentTimeConditionMatcherTest.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcherTest.java rename to yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotCurrentTimeConditionMatcherTest.java index f14da99a56..586d948cd0 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotCurrentTimeConditionMatcherTest.java @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionOperatorEnum; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionTypeEnum; -import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.BaseMatcherTest; +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,17 +16,17 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString import static org.junit.jupiter.api.Assertions.*; /** - * {@link CurrentTimeConditionMatcher} 的单元测试 + * {@link IotCurrentTimeConditionMatcher} 的单元测试 * * @author HUIHUI */ -public class CurrentTimeConditionMatcherTest extends BaseMatcherTest { +public class IotCurrentTimeConditionMatcherTest extends IotBaseConditionMatcherTest { - private CurrentTimeConditionMatcher matcher; + private IotCurrentTimeConditionMatcher matcher; @BeforeEach public void setUp() { - matcher = new CurrentTimeConditionMatcher(); + matcher = new IotCurrentTimeConditionMatcher(); } @Test diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDevicePropertyConditionMatcherTest.java similarity index 97% rename from yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcherTest.java rename to yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDevicePropertyConditionMatcherTest.java index ddfebc66be..5a40995567 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDevicePropertyConditionMatcherTest.java @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionOperatorEnum; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionTypeEnum; -import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.BaseMatcherTest; +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -15,17 +15,17 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId import static org.junit.jupiter.api.Assertions.*; /** - * {@link DevicePropertyConditionMatcher} 的单元测试 + * {@link IotDevicePropertyConditionMatcher} 的单元测试 * * @author HUIHUI */ -public class DevicePropertyConditionMatcherTest extends BaseMatcherTest { +public class IotDevicePropertyConditionMatcherTest extends IotBaseConditionMatcherTest { - private DevicePropertyConditionMatcher matcher; + private IotDevicePropertyConditionMatcher matcher; @BeforeEach public void setUp() { - matcher = new DevicePropertyConditionMatcher(); + matcher = new IotDevicePropertyConditionMatcher(); } @Test diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DeviceStateConditionMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDeviceStateConditionMatcherTest.java similarity index 97% rename from yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DeviceStateConditionMatcherTest.java rename to yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDeviceStateConditionMatcherTest.java index d54575ba41..da59077a6e 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DeviceStateConditionMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/IotDeviceStateConditionMatcherTest.java @@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionOperatorEnum; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionTypeEnum; -import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.BaseMatcherTest; +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -14,17 +14,17 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString import static org.junit.jupiter.api.Assertions.*; /** - * {@link DeviceStateConditionMatcher} 的单元测试 + * {@link IotDeviceStateConditionMatcher} 的单元测试 * * @author HUIHUI */ -public class DeviceStateConditionMatcherTest extends BaseMatcherTest { +public class IotDeviceStateConditionMatcherTest extends IotBaseConditionMatcherTest { - private DeviceStateConditionMatcher matcher; + private IotDeviceStateConditionMatcher matcher; @BeforeEach public void setUp() { - matcher = new DeviceStateConditionMatcher(); + matcher = new IotDeviceStateConditionMatcher(); } @Test diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceEventPostTriggerMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceEventPostTriggerMatcherTest.java similarity index 97% rename from yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceEventPostTriggerMatcherTest.java rename to yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceEventPostTriggerMatcherTest.java index 4569d439cc..9cf51421fe 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceEventPostTriggerMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceEventPostTriggerMatcherTest.java @@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; -import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.BaseMatcherTest; +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -18,17 +18,17 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString import static org.junit.jupiter.api.Assertions.*; /** - * {@link DeviceEventPostTriggerMatcher} 的单元测试 + * {@link IotDeviceEventPostTriggerMatcher} 的单元测试 * * @author HUIHUI */ -public class DeviceEventPostTriggerMatcherTest extends BaseMatcherTest { +public class IotDeviceEventPostTriggerMatcherTest extends IotBaseConditionMatcherTest { - private DeviceEventPostTriggerMatcher matcher; + private IotDeviceEventPostTriggerMatcher matcher; @BeforeEach public void setUp() { - matcher = new DeviceEventPostTriggerMatcher(); + matcher = new IotDeviceEventPostTriggerMatcher(); } @Test diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DevicePropertyPostTriggerMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDevicePropertyPostTriggerMatcherTest.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DevicePropertyPostTriggerMatcherTest.java rename to yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDevicePropertyPostTriggerMatcherTest.java index eb191eb927..fb155763aa 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DevicePropertyPostTriggerMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDevicePropertyPostTriggerMatcherTest.java @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionOperatorEnum; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; -import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.BaseMatcherTest; +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -20,17 +20,17 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString import static org.junit.jupiter.api.Assertions.*; /** - * {@link DevicePropertyPostTriggerMatcher} 的单元测试 + * {@link IotDevicePropertyPostTriggerMatcher} 的单元测试 * * @author HUIHUI */ -public class DevicePropertyPostTriggerMatcherTest extends BaseMatcherTest { +public class IotDevicePropertyPostTriggerMatcherTest extends IotBaseConditionMatcherTest { - private DevicePropertyPostTriggerMatcher matcher; + private IotDevicePropertyPostTriggerMatcher matcher; @BeforeEach public void setUp() { - matcher = new DevicePropertyPostTriggerMatcher(); + matcher = new IotDevicePropertyPostTriggerMatcher(); } @Test diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceServiceInvokeTriggerMatcherTest.java similarity index 97% rename from yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcherTest.java rename to yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceServiceInvokeTriggerMatcherTest.java index cfa36605f8..a515f1268e 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceServiceInvokeTriggerMatcherTest.java @@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; -import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.BaseMatcherTest; +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -18,17 +18,17 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString import static org.junit.jupiter.api.Assertions.*; /** - * {@link DeviceServiceInvokeTriggerMatcher} 的单元测试 + * {@link IotDeviceServiceInvokeTriggerMatcher} 的单元测试 * * @author HUIHUI */ -public class DeviceServiceInvokeTriggerMatcherTest extends BaseMatcherTest { +public class IotDeviceServiceInvokeTriggerMatcherTest extends IotBaseConditionMatcherTest { - private DeviceServiceInvokeTriggerMatcher matcher; + private IotDeviceServiceInvokeTriggerMatcher matcher; @BeforeEach public void setUp() { - matcher = new DeviceServiceInvokeTriggerMatcher(); + matcher = new IotDeviceServiceInvokeTriggerMatcher(); } @Test diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceStateUpdateTriggerMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceStateUpdateTriggerMatcherTest.java similarity index 92% rename from yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceStateUpdateTriggerMatcherTest.java rename to yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceStateUpdateTriggerMatcherTest.java index bee6e072e4..2e8b17a353 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceStateUpdateTriggerMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotDeviceStateUpdateTriggerMatcherTest.java @@ -1,42 +1,30 @@ package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger; -import cn.hutool.extra.spring.SpringUtil; import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; import cn.iocoder.yudao.module.iot.core.enums.IotDeviceStateEnum; import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionOperatorEnum; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; import static org.junit.jupiter.api.Assertions.*; /** - * {@link DeviceStateUpdateTriggerMatcher} 的单元测试 + * {@link IotDeviceStateUpdateTriggerMatcher} 的单元测试 * * @author HUIHUI */ -@SpringJUnitConfig(DeviceStateUpdateTriggerMatcherTest.TestConfig.class) -public class DeviceStateUpdateTriggerMatcherTest { +public class IotDeviceStateUpdateTriggerMatcherTest extends IotBaseConditionMatcherTest { - @Configuration - static class TestConfig { - @Bean - public SpringUtil springUtil() { - return new SpringUtil(); - } - } - - private DeviceStateUpdateTriggerMatcher matcher; + private IotDeviceStateUpdateTriggerMatcher matcher; @BeforeEach public void setUp() { - matcher = new DeviceStateUpdateTriggerMatcher(); + matcher = new IotDeviceStateUpdateTriggerMatcher(); } @Test diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/TimerTriggerMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotTimerTriggerMatcherTest.java similarity index 96% rename from yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/TimerTriggerMatcherTest.java rename to yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotTimerTriggerMatcherTest.java index f332f3097b..df47e6c28f 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/TimerTriggerMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/IotTimerTriggerMatcherTest.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger; import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; -import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.BaseMatcherTest; +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.IotBaseConditionMatcherTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -12,17 +12,17 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString import static org.junit.jupiter.api.Assertions.*; /** - * {@link TimerTriggerMatcher} 的单元测试 + * {@link IotTimerTriggerMatcher} 的单元测试 * * @author HUIHUI */ -public class TimerTriggerMatcherTest extends BaseMatcherTest { +public class IotTimerTriggerMatcherTest extends IotBaseConditionMatcherTest { - private TimerTriggerMatcher matcher; + private IotTimerTriggerMatcher matcher; @BeforeEach public void setUp() { - matcher = new TimerTriggerMatcher(); + matcher = new IotTimerTriggerMatcher(); } @Test diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/timer/IotSceneRuleTimerHandlerTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/timer/IotSceneRuleTimerHandlerTest.java new file mode 100644 index 0000000000..3e38e93616 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/timer/IotSceneRuleTimerHandlerTest.java @@ -0,0 +1,126 @@ +package cn.iocoder.yudao.module.iot.service.rule.scene.timer; + +import cn.hutool.core.collection.ListUtil; +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; +import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; +import cn.iocoder.yudao.module.iot.framework.job.core.IotSchedulerManager; +import cn.iocoder.yudao.module.iot.job.rule.IotSceneRuleJob; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.quartz.SchedulerException; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; + +/** + * {@link IotSceneRuleTimerHandler} 的单元测试类 + * + * @author HUIHUI + */ +@ExtendWith(MockitoExtension.class) +public class IotSceneRuleTimerHandlerTest { + + @Mock + private IotSchedulerManager schedulerManager; + + @InjectMocks + private IotSceneRuleTimerHandler timerHandler; + + @BeforeEach + void setUp() { + // 重置 Mock 对象 + reset(schedulerManager); + } + + @Test + public void testRegisterTimerTriggers_success() throws SchedulerException { + // 准备参数 + Long sceneRuleId = 1L; + IotSceneRuleDO sceneRule = new IotSceneRuleDO(); + sceneRule.setId(sceneRuleId); + sceneRule.setStatus(0); // 0 表示启用 + // 创建定时触发器 + IotSceneRuleDO.Trigger timerTrigger = new IotSceneRuleDO.Trigger(); + timerTrigger.setType(IotSceneRuleTriggerTypeEnum.TIMER.getType()); + timerTrigger.setCronExpression("0 0 12 * * ?"); // 每天中午12点 + sceneRule.setTriggers(ListUtil.toList(timerTrigger)); + + // 调用 + timerHandler.registerTimerTriggers(sceneRule); + + // 验证 + verify(schedulerManager, times(1)).addOrUpdateJob( + eq(IotSceneRuleJob.class), + eq("iot_scene_rule_timer_" + sceneRuleId), + eq("0 0 12 * * ?"), + eq(IotSceneRuleJob.buildJobDataMap(sceneRuleId)) + ); + } + + @Test + public void testRegisterTimerTriggers_noTimerTrigger() throws SchedulerException { + // 准备参数 - 没有定时触发器 + IotSceneRuleDO sceneRule = new IotSceneRuleDO(); + sceneRule.setStatus(0); // 0 表示启用 + // 创建非定时触发器 + IotSceneRuleDO.Trigger deviceTrigger = new IotSceneRuleDO.Trigger(); + deviceTrigger.setType(IotSceneRuleTriggerTypeEnum.DEVICE_PROPERTY_POST.getType()); + sceneRule.setTriggers(ListUtil.toList(deviceTrigger)); + + // 调用 + timerHandler.registerTimerTriggers(sceneRule); + + // 验证 - 不应该调用调度器 + verify(schedulerManager, never()).addOrUpdateJob(any(), any(), any(), any()); + } + + @Test + public void testRegisterTimerTriggers_emptyCronExpression() throws SchedulerException { + // 准备参数 - CRON 表达式为空 + Long sceneRuleId = 2L; + IotSceneRuleDO sceneRule = new IotSceneRuleDO(); + sceneRule.setId(sceneRuleId); + sceneRule.setStatus(0); // 0 表示启用 + // 创建定时触发器但没有 CRON 表达式 + IotSceneRuleDO.Trigger timerTrigger = new IotSceneRuleDO.Trigger(); + timerTrigger.setType(IotSceneRuleTriggerTypeEnum.TIMER.getType()); + timerTrigger.setCronExpression(""); // 空的 CRON 表达式 + sceneRule.setTriggers(ListUtil.toList(timerTrigger)); + + // 调用 + timerHandler.registerTimerTriggers(sceneRule); + + // 验证 - 不应该调用调度器 + verify(schedulerManager, never()).addOrUpdateJob(any(), any(), any(), any()); + } + + @Test + public void testUnregisterTimerTriggers_success() throws SchedulerException { + // 准备参数 + Long sceneRuleId = 3L; + + // 调用 + timerHandler.unregisterTimerTriggers(sceneRuleId); + + // 验证 + verify(schedulerManager, times(1)).deleteJob("iot_scene_rule_timer_" + sceneRuleId); + } + + @Test + public void testPauseTimerTriggers_success() throws SchedulerException { + // 准备参数 + Long sceneRuleId = 4L; + + // 调用 + timerHandler.pauseTimerTriggers(sceneRuleId); + + // 验证 + verify(schedulerManager, times(1)).pauseJob("iot_scene_rule_timer_" + sceneRuleId); + } + +}