diff options
author | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2012-06-04 11:54:27 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-08 17:46:07 +0200 |
commit | 876a0cfa56cdc9ed175b482a8f45018bf1538b86 (patch) | |
tree | b90a1bff62e1bc0bae82055f2026e07131679ca7 /tests | |
parent | a8eab2a9e28bf4b17121e052a5c032d9553c6975 (diff) |
Added a signal QJsonDbReadObjectRequest::objectUnavailable()
There was already a convenience signal that is emitted when object is found,
however when object is not found in the database, nothing but finished() was
emitted with zero results, which made the convenience api not convenient to use
:)
Change-Id: I3ea18ac37bbfd60a090b2f9f5b662df30133437e
Reviewed-by: Jamey Hicks <jamey.hicks@nokia.com>
Reviewed-by: Jing Bai <jing.t.bai@nokia.com>
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qjsondbrequest/testqjsondbrequest.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/auto/qjsondbrequest/testqjsondbrequest.cpp b/tests/auto/qjsondbrequest/testqjsondbrequest.cpp index 061b2364..95d0d806 100644 --- a/tests/auto/qjsondbrequest/testqjsondbrequest.cpp +++ b/tests/auto/qjsondbrequest/testqjsondbrequest.cpp @@ -58,6 +58,7 @@ #include <QFileInfo> #include <QTimer> #include <QTemporaryDir> +#include <QSignalSpy> #include <pwd.h> #include <signal.h> @@ -108,6 +109,7 @@ private slots: void invalidPrivatePartition(); void removeRequest(); void forced(); + void readObjectRequest(); void bindings(); void replaceFromNull(); void multiplerequests(); @@ -1223,6 +1225,44 @@ void TestQJsonDbRequest::privatePartitionFlushRequest() QCOMPARE((int)statuses.at(1), (int)QJsonDbRequest::Finished); } +void TestQJsonDbRequest::readObjectRequest() +{ + QUuid uuid = QUuid::createUuid(); + QJsonDbObject item; + item.setUuid(uuid); + item.insert(QStringLiteral("_type"), QStringLiteral("readObjectRequest")); + + QJsonDbReadObjectRequest request; + QSignalSpy availableSpy(&request, SIGNAL(objectAvailable(QJsonObject))); + QSignalSpy unavailableSpy(&request, SIGNAL(objectUnavailable(QUuid))); + + // test non-existent object + request.setUuid(uuid); + QVERIFY(mConnection->send(&request)); + QVERIFY(waitForResponse(&request)); + QCOMPARE(availableSpy.count(), 0); + QCOMPARE(unavailableSpy.count(), 1); + QList<QVariant> args = unavailableSpy.takeFirst(); + QCOMPARE(args.size(), 1); + QCOMPARE(args.at(0).value<QUuid>(), uuid); + + // create the object and try again + { + QJsonDbCreateRequest request(item); + QVERIFY(mConnection->send(&request)); + QVERIFY(waitForResponse(&request)); + } + QVERIFY(mConnection->send(&request)); + QVERIFY(waitForResponse(&request)); + QCOMPARE(availableSpy.count(), 1); + QCOMPARE(unavailableSpy.count(), 0); + args = availableSpy.takeFirst(); + QCOMPARE(args.size(), 1); + QJsonObject result = args.at(0).value<QJsonObject>(); + QCOMPARE(result.value(QStringLiteral("_uuid")).toString(), item.uuid().toString()); + QCOMPARE(result.value(QStringLiteral("_type")).toString(), item.value(QStringLiteral("_type")).toString()); +} + void TestQJsonDbRequest::bindings() { { |