From 681b306b1ba0e352bba3f5f173c1d6d291521b4c Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Mon, 9 Jul 2018 15:21:49 +0200 Subject: [PATCH] fix rules with time descriptors to follow the same logic --- libnymea-core/nymeacore.cpp | 4 ++-- libnymea-core/ruleengine.cpp | 5 ++++- tests/auto/timemanager/testtimemanager.cpp | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/libnymea-core/nymeacore.cpp b/libnymea-core/nymeacore.cpp index 21e3e64d..d8b8fe8f 100644 --- a/libnymea-core/nymeacore.cpp +++ b/libnymea-core/nymeacore.cpp @@ -594,7 +594,7 @@ void NymeaCore::gotEvent(const Event &event) if (!rule.eventDescriptors().isEmpty()) { m_logger->logRuleTriggered(rule); QList tmp; - if (rule.statesActive()) { + if (rule.statesActive() && rule.timeActive()) { qCDebug(dcRuleEngineDebug()) << "Executing actions"; tmp = rule.actions(); } else { @@ -653,7 +653,7 @@ void NymeaCore::onDateTimeChanged(const QDateTime &dateTime) // TimeEvent based if (!rule.timeDescriptor().timeEventItems().isEmpty()) { m_logger->logRuleTriggered(rule); - if (rule.statesActive()) { + if (rule.statesActive() && rule.timeActive()) { actions.append(rule.actions()); } else { actions.append(rule.exitActions()); diff --git a/libnymea-core/ruleengine.cpp b/libnymea-core/ruleengine.cpp index a82d31f4..98277d81 100644 --- a/libnymea-core/ruleengine.cpp +++ b/libnymea-core/ruleengine.cpp @@ -454,8 +454,10 @@ QList RuleEngine::evaluateTime(const QDateTime &dateTime) foreach (const Rule &r, m_rules.values()) { Rule rule = m_rules.value(r.id()); - if (!rule.enabled()) + if (!rule.enabled()) { + qCDebug(dcRuleEngineDebug()) << "Skipping rule" + rule.name() + "because it is disabled"; continue; + } // If no timeDescriptor, do nothing if (rule.timeDescriptor().isEmpty()) @@ -500,6 +502,7 @@ QList RuleEngine::evaluateTime(const QDateTime &dateTime) } m_lastEvaluationTime = dateTime; + qCDebug(dcRuleEngine()) << "EvaluateTimeEvent evaluated" << rules.count() << "to be executed"; return rules; } diff --git a/tests/auto/timemanager/testtimemanager.cpp b/tests/auto/timemanager/testtimemanager.cpp index 1a68e1e4..0e8dd3bd 100644 --- a/tests/auto/timemanager/testtimemanager.cpp +++ b/tests/auto/timemanager/testtimemanager.cpp @@ -1205,6 +1205,8 @@ void TestTimeManager::testCalendarItemEvent() QFETCH(QDateTime, dateTime); QFETCH(bool, trigger); + cleanupMockHistory(); + NymeaCore::instance()->timeManager()->setTime(dateTime); // Trigger event @@ -1212,7 +1214,6 @@ void TestTimeManager::testCalendarItemEvent() if (trigger) { verifyRuleExecuted(mockActionIdNoParams); - cleanupMockHistory(); } else { verifyRuleNotExecuted(); } @@ -1903,7 +1904,8 @@ void TestTimeManager::verifyRuleNotExecuted() QCOMPARE(spy.count(), 1); QByteArray actionHistory = reply->readAll(); - QVERIFY2(actionHistory.isEmpty(), "Action is triggered while it should not have been."); + qWarning() << "actionHistory" << actionHistory; + QVERIFY2(actionHistory.isEmpty(), "Actfdsfadsion is triggered while it should not have been."); reply->deleteLater(); }