fix packing rules for interface based events and actions

This commit is contained in:
Michael Zanetti 2018-02-26 00:30:10 +01:00
parent 8cdc5b4770
commit 84854868ea
2 changed files with 22 additions and 3 deletions

View File

@ -557,8 +557,13 @@ QVariantMap JsonTypes::packAction(const Action &action)
QVariantMap JsonTypes::packRuleAction(const RuleAction &ruleAction)
{
QVariantMap variant;
variant.insert("actionTypeId", ruleAction.actionTypeId());
variant.insert("deviceId", ruleAction.deviceId());
if (ruleAction.type() == RuleAction::TypeDevice) {
variant.insert("actionTypeId", ruleAction.actionTypeId());
variant.insert("deviceId", ruleAction.deviceId());
} else {
variant.insert("interface", ruleAction.interface());
variant.insert("interfaceAction", ruleAction.interfaceAction());
}
QVariantList params;
foreach (const RuleActionParam &ruleActionParam, ruleAction.ruleActionParams())
params.append(packRuleActionParam(ruleActionParam));

View File

@ -2165,6 +2165,20 @@ void TestRules::testInterfaceBasedRule()
addRuleParams.insert("eventDescriptors", QVariantList() << lowBatteryEvent);
QVariant response = injectAndWait("Rules.AddRule", addRuleParams);
QCOMPARE(response.toMap().value("status").toString(), QString("success"));
QCOMPARE(response.toMap().value("params").toMap().value("ruleError").toString(), QString("RuleErrorNoError"));
QVariantMap getRuleParams;
getRuleParams.insert("ruleId", response.toMap().value("params").toMap().value("ruleId"));
response = injectAndWait("Rules.GetRuleDetails", getRuleParams);
QCOMPARE(response.toMap().value("params").toMap().value("ruleError").toString(), QString("RuleErrorNoError"));
QCOMPARE(response.toMap().value("params").toMap().value("rule").toMap().value("eventDescriptors").toList().first().toMap().value("interface").toString(), QString("battery"));
QCOMPARE(response.toMap().value("params").toMap().value("rule").toMap().value("eventDescriptors").toList().first().toMap().value("interfaceEvent").toString(), QString("batteryCritical"));
QCOMPARE(response.toMap().value("params").toMap().value("rule").toMap().value("actions").toList().first().toMap().value("interface").toString(), QString("light"));
QCOMPARE(response.toMap().value("params").toMap().value("rule").toMap().value("actions").toList().first().toMap().value("interfaceAction").toString(), QString("power"));
// Change the state
@ -2179,7 +2193,7 @@ void TestRules::testInterfaceBasedRule()
QCOMPARE(spy.count(), 1);
reply->deleteLater();
qDebug() << "response" << response;
verifyRuleExecuted(mockActionIdPower);
}
void TestRules::testHousekeeping_data()