fixed enable disable notification tests

This commit is contained in:
Simon Stürz 2015-06-29 18:54:50 +02:00 committed by Michael Zanetti
parent 44bdfbcb13
commit b67bd44722
6 changed files with 74 additions and 92 deletions

View File

@ -357,6 +357,8 @@ void DevicePlugin::deviceRemoved(Device *device)
Q_UNUSED(device) Q_UNUSED(device)
} }
/*! This method will be called for \l{Device}{Devices} with the \l{DeviceClass::SetupMethodDisplayPin} right after the paring request
* with the given \a pairingTransactionId for the given \a deviceDescriptor.*/
DeviceManager::DeviceError DevicePlugin::displayPin(const PairingTransactionId &pairingTransactionId, const DeviceDescriptor &deviceDescriptor) DeviceManager::DeviceError DevicePlugin::displayPin(const PairingTransactionId &pairingTransactionId, const DeviceDescriptor &deviceDescriptor)
{ {
Q_UNUSED(pairingTransactionId) Q_UNUSED(pairingTransactionId)
@ -368,7 +370,8 @@ DeviceManager::DeviceError DevicePlugin::displayPin(const PairingTransactionId &
} }
/*! Confirms the pairing of a \a deviceClassId with the given \a pairingTransactionId and \a params. /*! Confirms the pairing of a \a deviceClassId with the given \a pairingTransactionId and \a params.
* Returns \l{DeviceManager::DeviceError}{DeviceError} to inform about the result. */ * Returns \l{DeviceManager::DeviceError}{DeviceError} to inform about the result. The optional paramerter
* \a secret contains for example the pin for \l{Device}{Devices} with the setup method \l{DeviceClass::SetupMethodDisplayPin}.*/
DeviceManager::DeviceSetupStatus DevicePlugin::confirmPairing(const PairingTransactionId &pairingTransactionId, const DeviceClassId &deviceClassId, const ParamList &params, const QString &secret = QString()) DeviceManager::DeviceSetupStatus DevicePlugin::confirmPairing(const PairingTransactionId &pairingTransactionId, const DeviceClassId &deviceClassId, const ParamList &params, const QString &secret = QString())
{ {
Q_UNUSED(pairingTransactionId) Q_UNUSED(pairingTransactionId)

View File

@ -92,6 +92,10 @@
This signal is emitted when a \a rule was added to the system. This signal is emitted when a \a rule was added to the system.
*/ */
/*! \fn void GuhCore::ruleConfigurationChanged(const Rule &rule);
This signal is emitted when the configuration of \a rule changed.
*/
/*! \fn void ruleActiveChanged(const Rule &rule); /*! \fn void ruleActiveChanged(const Rule &rule);
This signal is emitted when a \a rule changed the active state. This signal is emitted when a \a rule changed the active state.
A \l{Rule} is active, when all \l{State}{States} match with the \l{StateDescriptor} conditions. A \l{Rule} is active, when all \l{State}{States} match with the \l{StateDescriptor} conditions.
@ -311,34 +315,36 @@ DeviceManager::DeviceError GuhCore::editDevice(const DeviceId &deviceId, const D
return m_deviceManager->editDevice(deviceId, deviceDescriptorId); return m_deviceManager->editDevice(deviceId, deviceDescriptorId);
} }
/*! Calls the metheod RuleEngine::rule(). /*! Calls the metheod RuleEngine::rules().
* \sa RuleEngine, */ * \sa RuleEngine::rules(), */
QList<Rule> GuhCore::rules() const QList<Rule> GuhCore::rules() const
{ {
return m_ruleEngine->rules(); return m_ruleEngine->rules();
} }
/*! Calls the metheod RuleEngine::ruleIds(). /*! Calls the metheod RuleEngine::ruleIds().
* \sa RuleEngine, */ * \sa RuleEngine::ruleIds(), */
QList<RuleId> GuhCore::ruleIds() const QList<RuleId> GuhCore::ruleIds() const
{ {
return m_ruleEngine->ruleIds(); return m_ruleEngine->ruleIds();
} }
/*! Calls the metheod RuleEngine::findRule(\a ruleId). /*! Calls the metheod RuleEngine::findRule(\a ruleId).
* \sa RuleEngine, */ * \sa RuleEngine::findRule(), */
Rule GuhCore::findRule(const RuleId &ruleId) Rule GuhCore::findRule(const RuleId &ruleId)
{ {
return m_ruleEngine->findRule(ruleId); return m_ruleEngine->findRule(ruleId);
} }
/*! Calls the metheod RuleEngine::addRule(\a id, \a name, \a eventDescriptorList, \a stateEvaluator \a actionList, \a exitActionList, \a enabled). /*! Calls the metheod RuleEngine::addRule(\a id, \a name, \a eventDescriptorList, \a stateEvaluator \a actionList, \a exitActionList, \a enabled).
* \sa RuleEngine, */ * \sa RuleEngine::addRule(), */
RuleEngine::RuleError GuhCore::addRule(const RuleId &id, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actionList, const QList<RuleAction> &exitActionList, bool enabled) RuleEngine::RuleError GuhCore::addRule(const RuleId &id, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actionList, const QList<RuleAction> &exitActionList, bool enabled)
{ {
return m_ruleEngine->addRule(id, name, eventDescriptorList, stateEvaluator, actionList, exitActionList, enabled); return m_ruleEngine->addRule(id, name, eventDescriptorList, stateEvaluator, actionList, exitActionList, enabled);
} }
/*! Calls the metheod RuleEngine::editRule(\a id, \a name, \a eventDescriptorList, \a stateEvaluator \a actionList, \a exitActionList, \a enabled).
* \sa RuleEngine::editRule(), */
RuleEngine::RuleError GuhCore::editRule(const RuleId &id, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actionList, const QList<RuleAction> &exitActionList, bool enabled) RuleEngine::RuleError GuhCore::editRule(const RuleId &id, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actionList, const QList<RuleAction> &exitActionList, bool enabled)
{ {
return m_ruleEngine->editRule(id, name, eventDescriptorList, stateEvaluator, actionList, exitActionList, enabled); return m_ruleEngine->editRule(id, name, eventDescriptorList, stateEvaluator, actionList, exitActionList, enabled);
@ -358,11 +364,15 @@ QList<RuleId> GuhCore::findRules(const DeviceId &deviceId)
return m_ruleEngine->findRules(deviceId); return m_ruleEngine->findRules(deviceId);
} }
/*! Calls the metheod RuleEngine::enableRule(\a ruleId).
* \sa RuleEngine::enableRule(), */
RuleEngine::RuleError GuhCore::enableRule(const RuleId &ruleId) RuleEngine::RuleError GuhCore::enableRule(const RuleId &ruleId)
{ {
return m_ruleEngine->enableRule(ruleId); return m_ruleEngine->enableRule(ruleId);
} }
/*! Calls the metheod RuleEngine::disableRule(\a ruleId).
* \sa RuleEngine::disableRule(), */
RuleEngine::RuleError GuhCore::disableRule(const RuleId &ruleId) RuleEngine::RuleError GuhCore::disableRule(const RuleId &ruleId)
{ {
return m_ruleEngine->disableRule(ruleId); return m_ruleEngine->disableRule(ruleId);

View File

@ -42,9 +42,9 @@
\a ruleId holds the id of the removed rule. You should remove any references \a ruleId holds the id of the removed rule. You should remove any references
or copies you hold for this rule.*/ or copies you hold for this rule.*/
/*! \fn void RuleEngine::ruleConfigurationChanged(const RuleId &ruleId) /*! \fn void RuleEngine::ruleConfigurationChanged(const Rule &rule)
Will be emitted whenever a \l{Rule} changed his enable/disable status. Will be emitted whenever a \l{Rule} changed his enable/disable status.
\a ruleId holds the id of the changed rule.*/ The parameter \a rule holds the changed rule.*/
/*! \enum RuleEngine::RuleError /*! \enum RuleEngine::RuleError
\value RuleErrorNoError \value RuleErrorNoError
@ -348,13 +348,17 @@ RuleEngine::RuleError RuleEngine::addRule(const RuleId &ruleId, const QString &n
return RuleErrorNoError; return RuleErrorNoError;
} }
/*! Edit a \l{Rule} with the given \a ruleId, \a name, \a eventDescriptorList, \a stateEvaluator, the list of \a actions the list of \a exitActions and the \a enabled in the engine. */
RuleEngine::RuleError RuleEngine::editRule(const RuleId &ruleId, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actions, const QList<RuleAction> &exitActions, bool enabled) RuleEngine::RuleError RuleEngine::editRule(const RuleId &ruleId, const QString &name, const QList<EventDescriptor> &eventDescriptorList, const StateEvaluator &stateEvaluator, const QList<RuleAction> &actions, const QList<RuleAction> &exitActions, bool enabled)
{ {
if (ruleId.isNull()) { if (ruleId.isNull()) {
return RuleErrorInvalidRuleId; return RuleErrorInvalidRuleId;
} }
if (findRule(ruleId).id().isNull()) { // store rule in case the add new rule fails
Rule rule = findRule(ruleId);
if (rule.id().isNull()) {
qCWarning(dcRuleEngine) << "Cannot edit rule. There is no rule with id:" << ruleId.toString(); qCWarning(dcRuleEngine) << "Cannot edit rule. There is no rule with id:" << ruleId.toString();
return RuleErrorRuleNotFound; return RuleErrorRuleNotFound;
} }
@ -362,12 +366,15 @@ RuleEngine::RuleError RuleEngine::editRule(const RuleId &ruleId, const QString &
// first remove old rule with this id // first remove old rule with this id
RuleError removeResult = removeRule(ruleId, true); RuleError removeResult = removeRule(ruleId, true);
if (removeResult != RuleErrorNoError) { if (removeResult != RuleErrorNoError) {
// no need to restore, rule is still in system
return removeResult; return removeResult;
} }
// the rule is removed, now add it with the same id and new vonfiguration // the rule is removed, now add it with the same id and new vonfiguration
RuleError addResult = addRule(ruleId, name, eventDescriptorList, stateEvaluator, actions, exitActions, enabled, true); RuleError addResult = addRule(ruleId, name, eventDescriptorList, stateEvaluator, actions, exitActions, enabled, true);
if (addResult != RuleErrorNoError) { if (addResult != RuleErrorNoError) {
// restore rule
appendRule(rule);
return addResult; return addResult;
} }

View File

@ -168,16 +168,21 @@ bool GuhTestBase::enableNotifications()
QVariantMap notificationParams; QVariantMap notificationParams;
notificationParams.insert("enabled", true); notificationParams.insert("enabled", true);
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", notificationParams); QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", notificationParams);
if (response.toMap().value("params").toMap().value("enabled").toBool() != true) {
return response.toMap().value("params").toMap().value("enabled").toBool(); return false;
}
return true;
} }
bool GuhTestBase::disableNotifications() bool GuhTestBase::disableNotifications()
{ {
QVariantMap notificationParams; QVariantMap notificationParams;
notificationParams.insert("enabled", true); notificationParams.insert("enabled", false);
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", notificationParams); QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", notificationParams);
return !response.toMap().value("params").toMap().value("enabled").toBool(); if (response.toMap().value("params").toMap().value("enabled").toBool() != false) {
return false;
}
return true;
} }
void GuhTestBase::restartServer() void GuhTestBase::restartServer()

View File

@ -268,10 +268,7 @@ void TestJSONRPC::stateChangeEmitsNotifications()
void TestJSONRPC::deviceAddedRemovedNotifications() void TestJSONRPC::deviceAddedRemovedNotifications()
{ {
// enable notificartions // enable notificartions
QVariantMap params; QCOMPARE(enableNotifications(), true);
params.insert("enabled", true);
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", params);
QCOMPARE(response.toMap().value("params").toMap().value("enabled").toBool(), true);
// Setup connection to mock client // Setup connection to mock client
QSignalSpy clientSpy(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray))); QSignalSpy clientSpy(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
@ -283,27 +280,18 @@ void TestJSONRPC::deviceAddedRemovedNotifications()
httpportParam.insert("value", 8765); httpportParam.insert("value", 8765);
deviceParams.append(httpportParam); deviceParams.append(httpportParam);
params.clear(); response.clear(); QVariantMap params;
params.insert("deviceClassId", mockDeviceClassId); params.insert("deviceClassId", mockDeviceClassId);
params.insert("deviceParams", deviceParams); params.insert("deviceParams", deviceParams);
response = injectAndWait("Devices.AddConfiguredDevice", params); QVariant response = injectAndWait("Devices.AddConfiguredDevice", params);
clientSpy.wait();
verifyDeviceError(response);
QVariantMap notificationDeviceMap = checkNotification(clientSpy, "Devices.DeviceAdded").toMap().value("params").toMap().value("device").toMap();
// Lets wait for the notification DeviceId deviceId = DeviceId(response.toMap().value("params").toMap().value("deviceId").toString());
clientSpy.wait(500);
qDebug() << "got" << clientSpy.count() << "notifications";
//QCOMPARE(clientSpy.count(), 2); // wait for device added notification and response
QJsonDocument jsonDocResponse = QJsonDocument::fromJson(clientSpy.at(1).at(1).toByteArray());
QJsonDocument jsonDocNotification = QJsonDocument::fromJson(clientSpy.at(0).at(1).toByteArray());
verifyDeviceError(jsonDocResponse.toVariant());
DeviceId deviceId = DeviceId(jsonDocResponse.toVariant().toMap().value("params").toMap().value("deviceId").toString());
QVERIFY(!deviceId.isNull()); QVERIFY(!deviceId.isNull());
// check the DeviceAdded notification // check the DeviceAdded notification
QCOMPARE(jsonDocNotification.toVariant().toMap().value("notification").toString(), QString("Devices.DeviceAdded"));
QVariantMap notificationDeviceMap = jsonDocNotification.toVariant().toMap().value("params").toMap().value("device").toMap();
QCOMPARE(notificationDeviceMap.value("deviceClassId").toString(), mockDeviceClassId.toString()); QCOMPARE(notificationDeviceMap.value("deviceClassId").toString(), mockDeviceClassId.toString());
QCOMPARE(notificationDeviceMap.value("id").toString(), deviceId.toString()); QCOMPARE(notificationDeviceMap.value("id").toString(), deviceId.toString());
foreach (const QVariant &param, notificationDeviceMap.value("params").toList()) { foreach (const QVariant &param, notificationDeviceMap.value("params").toList()) {
@ -312,35 +300,24 @@ void TestJSONRPC::deviceAddedRemovedNotifications()
} }
} }
// Setup connection to mock client
QSignalSpy clientSpy2(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
// now remove the device and check the device removed notification // now remove the device and check the device removed notification
params.clear(); response.clear(); params.clear(); response.clear(); clientSpy.clear();
params.insert("deviceId", deviceId); params.insert("deviceId", deviceId);
response = injectAndWait("Devices.RemoveConfiguredDevice", params); response = injectAndWait("Devices.RemoveConfiguredDevice", params);
clientSpy.wait();
verifyDeviceError(response);
checkNotification(clientSpy, "Devices.DeviceRemoved");
clientSpy2.wait(500); //QCOMPARE(disableNotifications(), true);
qDebug() << "got" << clientSpy2.count() << "notifications";
QCOMPARE(clientSpy2.count(), 2); // wait for device removed notification and response
jsonDocResponse = QJsonDocument::fromJson(clientSpy2.at(1).at(1).toByteArray());
jsonDocNotification = QJsonDocument::fromJson(clientSpy2.at(0).at(1).toByteArray());
verifyDeviceError(jsonDocResponse.toVariant());
// check the DeviceRemoved notification
QCOMPARE(jsonDocNotification.toVariant().toMap().value("notification").toString(), QString("Devices.DeviceRemoved"));
QCOMPARE(jsonDocNotification.toVariant().toMap().value("params").toMap().value("deviceId").toString(), deviceId.toString());
} }
void TestJSONRPC::ruleAddedRemovedNotifications() void TestJSONRPC::ruleAddedRemovedNotifications()
{ {
// enable notificartions // enable notificartions
QVariantMap params; QCOMPARE(enableNotifications(), true);
params.insert("enabled", true);
QVariant response = injectAndWait("JSONRPC.SetNotificationStatus", params); // Setup connection to mock client
QCOMPARE(response.toMap().value("params").toMap().value("enabled").toBool(), true); QSignalSpy clientSpy(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
// Add rule and wait for notification // Add rule and wait for notification
// StateDescriptor // StateDescriptor
@ -365,32 +342,20 @@ void TestJSONRPC::ruleAddedRemovedNotifications()
eventDescriptor.insert("deviceId", m_mockDeviceId); eventDescriptor.insert("deviceId", m_mockDeviceId);
eventDescriptor.insert("paramDescriptors", QVariantList()); eventDescriptor.insert("paramDescriptors", QVariantList());
params.clear(); response.clear(); QVariantMap params;
params.insert("name", "Test Rule notifications"); params.insert("name", "Test Rule notifications");
params.insert("actions", QVariantList() << actionNoParams); params.insert("actions", QVariantList() << actionNoParams);
params.insert("eventDescriptor", eventDescriptor); params.insert("eventDescriptor", eventDescriptor);
params.insert("stateEvaluator", stateEvaluator); params.insert("stateEvaluator", stateEvaluator);
// Setup connection to mock client QVariant response = injectAndWait("Rules.AddRule", params);
QSignalSpy clientSpy(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray))); clientSpy.wait();
QVariantMap notificationRuleMap = checkNotification(clientSpy, "Rules.RuleAdded").toMap().value("params").toMap().value("rule").toMap();
verifyRuleError(response);
response = injectAndWait("Rules.AddRule", params); RuleId ruleId = RuleId(response.toMap().value("params").toMap().value("ruleId").toString());
clientSpy.wait(500);
qDebug() << "got" << clientSpy.count() << "notifications";
QCOMPARE(clientSpy.count(), 2);
QJsonDocument jsonDocResponse = QJsonDocument::fromJson(clientSpy.at(1).at(1).toByteArray());
QJsonDocument jsonDocNotification = QJsonDocument::fromJson(clientSpy.at(0).at(1).toByteArray());
verifyRuleError(jsonDocResponse.toVariant());
RuleId ruleId = RuleId(jsonDocResponse.toVariant().toMap().value("params").toMap().value("ruleId").toString());
QVERIFY(!ruleId.isNull()); QVERIFY(!ruleId.isNull());
// check the DeviceAdded notification
QCOMPARE(jsonDocNotification.toVariant().toMap().value("notification").toString(), QString("Rules.RuleAdded"));
QVariantMap notificationRuleMap = jsonDocNotification.toVariant().toMap().value("params").toMap().value("rule").toMap();
QCOMPARE(notificationRuleMap.value("enabled").toBool(), true); QCOMPARE(notificationRuleMap.value("enabled").toBool(), true);
QCOMPARE(notificationRuleMap.value("name").toString(), params.value("name").toString()); QCOMPARE(notificationRuleMap.value("name").toString(), params.value("name").toString());
QCOMPARE(notificationRuleMap.value("id").toString(), ruleId.toString()); QCOMPARE(notificationRuleMap.value("id").toString(), ruleId.toString());
@ -399,26 +364,16 @@ void TestJSONRPC::ruleAddedRemovedNotifications()
QCOMPARE(notificationRuleMap.value("eventDescriptors").toList(), QVariantList() << eventDescriptor); QCOMPARE(notificationRuleMap.value("eventDescriptors").toList(), QVariantList() << eventDescriptor);
QCOMPARE(notificationRuleMap.value("exitActions").toList(), QVariantList()); QCOMPARE(notificationRuleMap.value("exitActions").toList(), QVariantList());
// Setup connection to mock client
QSignalSpy clientSpy2(m_mockTcpServer, SIGNAL(outgoingData(QUuid,QByteArray)));
// now remove the rule and check the RuleRemoved notification // now remove the rule and check the RuleRemoved notification
params.clear(); response.clear(); params.clear(); response.clear(); clientSpy.clear();
params.insert("ruleId", ruleId); params.insert("ruleId", ruleId);
response = injectAndWait("Rules.RemoveRule", params); response = injectAndWait("Rules.RemoveRule", params);
clientSpy.wait();
checkNotification(clientSpy, "Devices.DeviceRemoved");
verifyRuleError(response);
clientSpy2.wait(500); QCOMPARE(disableNotifications(), true);
qDebug() << "got" << clientSpy2.count() << "notifications";
QCOMPARE(clientSpy2.count(), 2); // wait for RuleRemoved notification and response
jsonDocResponse = QJsonDocument::fromJson(clientSpy2.at(1).at(1).toByteArray());
jsonDocNotification = QJsonDocument::fromJson(clientSpy2.at(0).at(1).toByteArray());
verifyRuleError(jsonDocResponse.toVariant());
// check the DeviceRemoved notification
QCOMPARE(jsonDocNotification.toVariant().toMap().value("notification").toString(), QString("Rules.RuleRemoved"));
QCOMPARE(jsonDocNotification.toVariant().toMap().value("params").toMap().value("ruleId").toString(), ruleId.toString());
} }
void TestJSONRPC::ruleActiveChangedNotifications() void TestJSONRPC::ruleActiveChangedNotifications()
@ -456,7 +411,7 @@ void TestJSONRPC::ruleActiveChangedNotifications()
response = injectAndWait("Rules.AddRule", params); response = injectAndWait("Rules.AddRule", params);
clientSpy.wait(500); clientSpy.wait();
qDebug() << "got" << clientSpy.count() << "notifications"; qDebug() << "got" << clientSpy.count() << "notifications";
QCOMPARE(clientSpy.count(), 2); QCOMPARE(clientSpy.count(), 2);
@ -491,7 +446,7 @@ void TestJSONRPC::ruleActiveChangedNotifications()
QCOMPARE(spy.count(), 1); QCOMPARE(spy.count(), 1);
reply->deleteLater(); reply->deleteLater();
clientSpy2.wait(500); clientSpy2.wait();
qDebug() << "got" << clientSpy2.count() << "notifications"; qDebug() << "got" << clientSpy2.count() << "notifications";
QCOMPARE(clientSpy2.count(), 6); QCOMPARE(clientSpy2.count(), 6);
@ -515,7 +470,7 @@ void TestJSONRPC::ruleActiveChangedNotifications()
QCOMPARE(spy.count(), 1); QCOMPARE(spy.count(), 1);
reply2->deleteLater(); reply2->deleteLater();
clientSpy2.wait(500); clientSpy2.wait();
QCOMPARE(clientSpy2.count(), 5); QCOMPARE(clientSpy2.count(), 5);
for (int i = 0; i < clientSpy2.count(); i++) { for (int i = 0; i < clientSpy2.count(); i++) {
@ -536,7 +491,7 @@ void TestJSONRPC::ruleActiveChangedNotifications()
params.insert("ruleId", ruleId); params.insert("ruleId", ruleId);
response = injectAndWait("Rules.RemoveRule", params); response = injectAndWait("Rules.RemoveRule", params);
clientSpy3.wait(500); clientSpy3.wait();
qDebug() << "got" << clientSpy3.count() << "notifications"; qDebug() << "got" << clientSpy3.count() << "notifications";
QCOMPARE(clientSpy3.count(), 2); // wait for RuleRemoved notification and response QCOMPARE(clientSpy3.count(), 2); // wait for RuleRemoved notification and response
@ -576,7 +531,7 @@ void TestJSONRPC::deviceParamsChangedNotifications()
response = injectAndWait("Devices.AddConfiguredDevice", params); response = injectAndWait("Devices.AddConfiguredDevice", params);
// Lets wait for the notification // Lets wait for the notification
clientSpy.wait(500); clientSpy.wait();
QCOMPARE(clientSpy.count(), 2); // wait for device added notification and response QCOMPARE(clientSpy.count(), 2); // wait for device added notification and response
QJsonDocument jsonDocResponse = QJsonDocument::fromJson(clientSpy.at(1).at(1).toByteArray()); QJsonDocument jsonDocResponse = QJsonDocument::fromJson(clientSpy.at(1).at(1).toByteArray());
@ -615,7 +570,7 @@ void TestJSONRPC::deviceParamsChangedNotifications()
params.insert("deviceParams", newDeviceParams); params.insert("deviceParams", newDeviceParams);
response = injectAndWait("Devices.EditDevice", params); response = injectAndWait("Devices.EditDevice", params);
clientSpy2.wait(500); clientSpy2.wait();
QCOMPARE(clientSpy2.count(), 2); QCOMPARE(clientSpy2.count(), 2);
jsonDocResponse = QJsonDocument::fromJson(clientSpy2.at(1).at(1).toByteArray()); jsonDocResponse = QJsonDocument::fromJson(clientSpy2.at(1).at(1).toByteArray());
@ -644,7 +599,7 @@ void TestJSONRPC::deviceParamsChangedNotifications()
params.insert("deviceId", deviceId); params.insert("deviceId", deviceId);
response = injectAndWait("Devices.RemoveConfiguredDevice", params); response = injectAndWait("Devices.RemoveConfiguredDevice", params);
clientSpy3.wait(500); clientSpy3.wait();
QCOMPARE(clientSpy3.count(), 2); // wait for device removed notification and response QCOMPARE(clientSpy3.count(), 2); // wait for device removed notification and response
jsonDocResponse = QJsonDocument::fromJson(clientSpy3.at(1).at(1).toByteArray()); jsonDocResponse = QJsonDocument::fromJson(clientSpy3.at(1).at(1).toByteArray());

View File

@ -662,6 +662,8 @@ void TestRules::editRules()
response = injectAndWait("Rules.EditRule", params); response = injectAndWait("Rules.EditRule", params);
verifyRuleError(response, error); verifyRuleError(response, error);
if (error == RuleEngine::RuleErrorNoError){ if (error == RuleEngine::RuleErrorNoError){
clientSpy.wait();
QVariant notification = checkNotification(clientSpy, "Rules.RuleConfigurationChanged"); QVariant notification = checkNotification(clientSpy, "Rules.RuleConfigurationChanged");
QVERIFY2(notification != QVariant(), "not received \"Rules.RuleConfigurationChanged\" notification"); QVERIFY2(notification != QVariant(), "not received \"Rules.RuleConfigurationChanged\" notification");