From d396cd16d243f348510b2ffb461b766acab5240e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Sat, 3 Jan 2015 15:50:36 +0100 Subject: [PATCH] added test --- server/ruleengine.cpp | 1 + server/stateevaluator.cpp | 1 - server/stateevaluator.h | 1 + tests/auto/rules/testrules.cpp | 43 +++++++++++++++++++++++++++++++++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/server/ruleengine.cpp b/server/ruleengine.cpp index 664b0061..5dd604c8 100644 --- a/server/ruleengine.cpp +++ b/server/ruleengine.cpp @@ -127,6 +127,7 @@ RuleEngine::RuleEngine(QObject *parent) : StateEvaluator stateEvaluator = StateEvaluator::loadFromSettings(settings, "stateEvaluator"); + settings.beginGroup("actions"); QList actions; foreach (const QString &actionIdString, settings.childGroups()) { diff --git a/server/stateevaluator.cpp b/server/stateevaluator.cpp index fed5ba46..e177d2c3 100644 --- a/server/stateevaluator.cpp +++ b/server/stateevaluator.cpp @@ -166,7 +166,6 @@ StateEvaluator StateEvaluator::loadFromSettings(QSettings &settings, const QStri settings.endGroup(); } settings.endGroup(); - settings.endGroup(); return ret; } diff --git a/server/stateevaluator.h b/server/stateevaluator.h index 63d43011..4105e2a0 100644 --- a/server/stateevaluator.h +++ b/server/stateevaluator.h @@ -23,6 +23,7 @@ #include "types/statedescriptor.h" #include +#include class StateEvaluator { diff --git a/tests/auto/rules/testrules.cpp b/tests/auto/rules/testrules.cpp index 4a89c713..d87a36fb 100644 --- a/tests/auto/rules/testrules.cpp +++ b/tests/auto/rules/testrules.cpp @@ -236,7 +236,7 @@ void TestRules::addRemoveRules() params.clear(); params.insert("ruleId", newRuleId); response = injectAndWait("Rules.GetRuleDetails", params); -// verifySuccess(response); + // verifySuccess(response); QVariantMap rule = response.toMap().value("params").toMap().value("rule").toMap(); @@ -305,6 +305,35 @@ void TestRules::loadStoreConfig() eventDescriptorList.append(eventDescriptor1); eventDescriptorList.append(eventDescriptor2); + + QVariantMap stateEvaluator1; + QVariantList childEvaluators; + + QVariantMap stateDescriptor2; + stateDescriptor2.insert("deviceId", m_mockDeviceId); + stateDescriptor2.insert("operator", JsonTypes::valueOperatorToString(Types::ValueOperatorEquals)); + stateDescriptor2.insert("stateTypeId", mockIntStateId); + stateDescriptor2.insert("value", 1); + QVariantMap stateEvaluator2; + stateEvaluator2.insert("stateDescriptor", stateDescriptor2); + stateEvaluator2.insert("operator", JsonTypes::stateOperatorToString(Types::StateOperatorAnd)); + + + QVariantMap stateDescriptor3; + stateDescriptor3.insert("deviceId", m_mockDeviceId); + stateDescriptor3.insert("operator", JsonTypes::valueOperatorToString(Types::ValueOperatorEquals)); + stateDescriptor3.insert("stateTypeId", mockBoolStateId); + stateDescriptor3.insert("value", true); + + QVariantMap stateEvaluator3; + stateEvaluator3.insert("stateDescriptor", stateDescriptor3); + stateEvaluator3.insert("operator", JsonTypes::stateOperatorToString(Types::StateOperatorAnd)); + + childEvaluators.append(stateEvaluator2); + childEvaluators.append(stateEvaluator3); + stateEvaluator1.insert("childEvaluators", childEvaluators); + stateEvaluator1.insert("operator", JsonTypes::stateOperatorToString(Types::StateOperatorAnd)); + QVariantMap action1; action1.insert("actionTypeId", mockActionIdNoParams); action1.insert("deviceId", m_mockDeviceId); @@ -366,6 +395,18 @@ void TestRules::loadStoreConfig() QVERIFY2(found, "missing eventdescriptor"); } + QVariantMap replyStateEvaluator= rule.value("stateEvaluator").toMap(); + QVariantList replyChildEvaluators = replyStateEvaluator.value("childEvaluators").toList(); + QVERIFY2(replyStateEvaluator.value("operator") == "StateOperatorAnd", "There should be the AND operator."); + QVERIFY2(replyChildEvaluators.count() == 2, "There shoud be exactly 2 childEvaluators"); + foreach (const QVariant &childEvaluator, replyChildEvaluators) { + if (childEvaluator.toMap().contains("stateDescriptor")) { + QVariantMap stateDescriptor = childEvaluator.toMap().value("stateDescriptor").toMap(); + QVERIFY2(stateDescriptor.value("deviceId") == m_mockDeviceId, "DeviceId of stateDescriptor does not match"); + QVERIFY2(stateDescriptor.value("stateTypeId") == mockIntStateId || stateDescriptor.value("stateTypeId") == mockBoolStateId, "StateTypeId of stateDescriptor doesn't match"); + } + } + QVariantList replyActions = rule.value("actions").toList(); foreach (const QVariant &actionVariant, actions) { bool found = false;