fix rules with time descriptors to follow the same logic

pull/135/head
Michael Zanetti 2018-07-09 15:21:49 +02:00
parent 0f699ac917
commit 681b306b1b
3 changed files with 10 additions and 5 deletions

View File

@ -594,7 +594,7 @@ void NymeaCore::gotEvent(const Event &event)
if (!rule.eventDescriptors().isEmpty()) {
m_logger->logRuleTriggered(rule);
QList<RuleAction> 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());

View File

@ -454,8 +454,10 @@ QList<Rule> 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<Rule> RuleEngine::evaluateTime(const QDateTime &dateTime)
}
m_lastEvaluationTime = dateTime;
qCDebug(dcRuleEngine()) << "EvaluateTimeEvent evaluated" << rules.count() << "to be executed";
return rules;
}

View File

@ -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();
}