add tests for rule action param verification

fix #231
pull/135/head
Simon Stürz 2015-11-26 19:44:38 +01:00 committed by Michael Zanetti
parent 1bd913aea5
commit 09d66587ce
2 changed files with 83 additions and 0 deletions

View File

@ -298,10 +298,17 @@ DeviceManager::DeviceError DeviceManager::setPluginConfig(const PluginId &plugin
if (!plugin) {
return DeviceErrorPluginNotFound;
}
DeviceError verify = verifyParams(plugin->configurationDescription(), pluginConfig);
if (verify != DeviceErrorNoError) {
return verify;
}
DeviceError result = plugin->setConfiguration(pluginConfig);
if (result != DeviceErrorNoError) {
return result;
}
GuhSettings settings(GuhSettings::SettingsRolePlugins);
settings.beginGroup("PluginConfig");
settings.beginGroup(plugin->pluginId().toString());

View File

@ -74,6 +74,9 @@ private slots:
void enableDisableRule();
void testEventBasedAction();
void testRuleActionParams_data();
void testRuleActionParams();
};
void TestRules::cleanupMockHistory() {
@ -150,6 +153,15 @@ void TestRules::addRemoveRules_data()
validActionNoParams.insert("deviceId", m_mockDeviceId);
validActionNoParams.insert("ruleActionParams", QVariantList());
QVariantMap validActionWithParams;
validActionWithParams.insert("actionTypeId", mockActionIdNoParams);
validActionWithParams.insert("deviceId", m_mockDeviceId);
QVariantList actionParams;
validActionWithParams.insert("ruleActionParams", QVariantList());
QVariantMap invalidAction;
invalidAction.insert("actionTypeId", ActionTypeId());
invalidAction.insert("deviceId", m_mockDeviceId);
@ -1375,5 +1387,69 @@ void TestRules::testEventBasedAction()
// TODO: check if this action was realy executed with the int state value 42
}
void TestRules::testRuleActionParams_data()
{
QVariantMap action;
QVariantList ruleActionParams;
QVariantMap param1;
param1.insert("name", "mockActionParam1");
param1.insert("value", 4);
QVariantMap param2;
param2.insert("name", "mockActionParam2");
param2.insert("value", true);
ruleActionParams.append(param1);
ruleActionParams.append(param2);
action.insert("actionTypeId", mockActionIdWithParams);
action.insert("deviceId", m_mockDeviceId);
action.insert("ruleActionParams", ruleActionParams);
QVariantMap invalidAction1;
invalidAction1.insert("actionTypeId", mockActionIdWithParams);
invalidAction1.insert("deviceId", m_mockDeviceId);
invalidAction1.insert("ruleActionParams", QVariantList() << param2);
QVariantMap invalidAction2;
invalidAction2.insert("actionTypeId", mockActionIdWithParams);
invalidAction2.insert("deviceId", m_mockDeviceId);
invalidAction2.insert("ruleActionParams", QVariantList() << param1);
QTest::addColumn<QVariantMap>("action");
QTest::addColumn<QVariantMap>("exitAction");
QTest::addColumn<RuleEngine::RuleError>("error");
QTest::newRow("valid action params") << action << QVariantMap() << RuleEngine::RuleErrorNoError;
QTest::newRow("valid action and exit action params") << action << action << RuleEngine::RuleErrorNoError;
QTest::newRow("invalid action params1") << invalidAction1 << QVariantMap() << RuleEngine::RuleErrorInvalidRuleActionParameter;
QTest::newRow("invalid action params2") << invalidAction2 << QVariantMap() << RuleEngine::RuleErrorInvalidRuleActionParameter;
QTest::newRow("valid action and invalid exit action params1") << action << invalidAction1 << RuleEngine::RuleErrorInvalidRuleActionParameter;
QTest::newRow("valid action and invalid exit action params2") << action << invalidAction2 << RuleEngine::RuleErrorInvalidRuleActionParameter;
}
void TestRules::testRuleActionParams()
{
QFETCH(QVariantMap, action);
QFETCH(QVariantMap, exitAction);
QFETCH(RuleEngine::RuleError, error);
// Add a rule
QVariantMap addRuleParams;
addRuleParams.insert("name", "TestRule");
addRuleParams.insert("enabled", true);
if (!action.isEmpty())
addRuleParams.insert("actions", QVariantList() << action);
if (!exitAction.isEmpty())
addRuleParams.insert("exitActions", QVariantList() << exitAction);
QVariant response = injectAndWait("Rules.AddRule", addRuleParams);
verifyRuleError(response, error);
}
#include "testrules.moc"
QTEST_MAIN(TestRules)