add checkNotifications

pull/135/head
Simon Stürz 2016-02-29 09:34:07 +01:00 committed by Michael Zanetti
parent 1c46a99412
commit e060d27a57
3 changed files with 39 additions and 5 deletions

View File

@ -177,6 +177,27 @@ QVariant GuhTestBase::checkNotification(const QSignalSpy &spy, const QString &no
return QVariant();
}
QVariantList GuhTestBase::checkNotifications(const QSignalSpy &spy, const QString &notification)
{
qDebug() << "Got" << spy.count() << "notifications while waiting for" << notification;
QVariantList notificationList;
for (int i = 0; i < spy.count(); i++) {
// Make sure the response it a valid JSON string
QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(spy.at(i).last().toByteArray(), &error);
if (error.error != QJsonParseError::NoError) {
qWarning() << "JSON parser error" << error.errorString();
return notificationList;
}
QVariantMap response = jsonDoc.toVariant().toMap();
if (response.value("notification").toString() == notification) {
notificationList.append(jsonDoc.toVariant());
}
}
return notificationList;
}
QVariant GuhTestBase::getAndWait(const QNetworkRequest &request, const int &expectedStatus)
{
QNetworkAccessManager nam;
@ -323,6 +344,7 @@ bool GuhTestBase::enableNotifications()
if (response.toMap().value("params").toMap().value("enabled").toBool() != true) {
return false;
}
qDebug() << "Notifications enabled.";
return true;
}
@ -334,6 +356,7 @@ bool GuhTestBase::disableNotifications()
if (response.toMap().value("params").toMap().value("enabled").toBool() != false) {
return false;
}
qDebug() << "Notifications disabled.";
return true;
}

View File

@ -72,6 +72,7 @@ protected slots:
protected:
QVariant injectAndWait(const QString &method, const QVariantMap &params = QVariantMap());
QVariant checkNotification(const QSignalSpy &spy, const QString &notification);
QVariantList checkNotifications(const QSignalSpy &spy, const QString &notification);
QVariant getAndWait(const QNetworkRequest &request, const int &expectedStatus = 200);
QVariant deleteAndWait(const QNetworkRequest &request, const int &expectedStatus = 200);

View File

@ -215,15 +215,25 @@ void TestJSONRPC::stateChangeEmitsNotifications()
clientSpy.wait();
// Make sure the notification contains all the stuff we expect
QVariant stateChangedVariant = checkNotification(clientSpy, "Devices.StateChanged");
QVERIFY2(!stateChangedVariant.isNull(), "Did not get Devices.StateChanged notification.");
QCOMPARE(stateChangedVariant.toMap().value("params").toMap().value("stateTypeId").toUuid(), stateTypeId);
QCOMPARE(stateChangedVariant.toMap().value("params").toMap().value("value").toInt(), newVal);
QVariantList stateChangedVariants = checkNotifications(clientSpy, "Devices.StateChanged");
QVERIFY2(!stateChangedVariants.isEmpty(), "Did not get Devices.StateChanged notification.");
qDebug() << "got" << stateChangedVariants.count() << "Devices.StateChanged notifications";
bool found = false;
foreach (const QVariant &stateChangedVariant, stateChangedVariants) {
if (stateChangedVariant.toMap().value("params").toMap().value("stateTypeId").toUuid() == stateTypeId)
{
QCOMPARE(stateChangedVariant.toMap().value("params").toMap().value("value").toInt(), newVal);
found = true;
break;
}
}
QCOMPARE(found, true);
// Make sure the notification contains all the stuff we expect
QVariant loggEntryAddedVariant = checkNotification(clientSpy, "Logging.LogEntryAdded");
QVERIFY2(!loggEntryAddedVariant.isNull(), "Did not get Logging.LogEntryAdded notification.");
QCOMPARE(loggEntryAddedVariant.toMap().value("params").toMap().value("logEntry").toMap().value("typeId").toUuid(), stateTypeId);
// Make sure the notification contains all the stuff we expect
QVariant eventTriggeredVariant = checkNotification(clientSpy, "Events.EventTriggered");