diff options
author | abcd <amos.choy@nokia.com> | 2012-07-04 16:46:34 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-12 04:48:28 +0200 |
commit | c7c6cbe48171534511306f72fd57ff5d62979e5e (patch) | |
tree | 1335b68bbe9eb17708824afd0bd0cff0526dc715 /tests/auto/geotestplugin/qplacemanagerengine_test.h | |
parent | 5fcd5bc9236ad21fe09f458889dbf6e3544ee134 (diff) | |
download | qtlocation-c7c6cbe48171534511306f72fd57ff5d62979e5e.tar.gz |
Expand unit tests for review model
Change-Id: I7915d8056828bc81e8c31c8e3c281cdf215f42a0
Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
Diffstat (limited to 'tests/auto/geotestplugin/qplacemanagerengine_test.h')
-rw-r--r-- | tests/auto/geotestplugin/qplacemanagerengine_test.h | 78 |
1 files changed, 74 insertions, 4 deletions
diff --git a/tests/auto/geotestplugin/qplacemanagerengine_test.h b/tests/auto/geotestplugin/qplacemanagerengine_test.h index 1753d735..5b36c432 100644 --- a/tests/auto/geotestplugin/qplacemanagerengine_test.h +++ b/tests/auto/geotestplugin/qplacemanagerengine_test.h @@ -42,6 +42,7 @@ #ifndef QPLACEMANAGERENGINE_TEST_H #define QPLACEMANAGERENGINE_TEST_H +#include <QtCore/QDateTime> #include <QtCore/QFile> #include <QtCore/QJsonDocument> #include <QtCore/QJsonObject> @@ -49,6 +50,7 @@ #include <QtCore/QUuid> #include <QtLocation/QGeoCoordinate> #include <QtLocation/QGeoLocation> +#include <QtLocation/QPlaceContentReply> #include <QtLocation/QPlaceManager> #include <QtLocation/QPlaceManagerEngine> #include <QtLocation/QPlaceReply> @@ -59,6 +61,7 @@ #include <QtLocation/QPlaceResult> #include <QtLocation/QPlaceCategory> #include <QtLocation/QPlace> +#include <QtLocation/QPlaceReview> #include <QtTest/QTest> QT_BEGIN_NAMESPACE @@ -89,6 +92,28 @@ public: } }; +class ContentReply : public QPlaceContentReply +{ + Q_OBJECT + + friend class QPlaceManagerEngineTest; + +public: + ContentReply(QObject *parent = 0) + : QPlaceContentReply(parent) + {} + + Q_INVOKABLE void emitError() + { + emit error(error(), errorString()); + } + + Q_INVOKABLE void emitFinished() + { + emit finished(); + } +}; + class DetailsReply : public QPlaceDetailsReply { Q_OBJECT @@ -185,7 +210,6 @@ public: : QPlaceManagerEngine(parameters) { m_locales << QLocale(); - if (parameters.value(QStringLiteral("initializePlaceData"), false).toBool()) { QFile placeData(QFINDTESTDATA("place_data.json")); if (placeData.open(QIODevice::ReadOnly)) { @@ -249,6 +273,33 @@ public: for (int j = 0; j < ra.count(); ++j) recommendations.append(ra.at(j).toString()); m_placeRecommendations.insert(place.placeId(), recommendations); + + QJsonArray revArray = p.value(QStringLiteral("reviews")).toArray(); + QList<QPlaceReview> reviews; + for (int j = 0; j < revArray.count(); ++j) { + QJsonObject ro = revArray.at(j).toObject(); + QPlaceReview review; + if (ro.contains(QStringLiteral("title"))) + review.setTitle(ro.value(QStringLiteral("title")).toString()); + if (ro.contains(QStringLiteral("text"))) + review.setText(ro.value(QStringLiteral("text")).toString()); + + if (ro.contains(QStringLiteral("language"))) + review.setLanguage(ro.value("language").toString()); + + if (ro.contains(QStringLiteral("rating"))) + review.setRating(ro.value("rating").toDouble()); + + if (ro.contains(QStringLiteral("dateTime"))) + review.setDateTime(QDateTime::fromString( + ro.value(QStringLiteral("dateTime")).toString(), + QLatin1String("hh:mm dd-MM-yyyy"))); + if (ro.contains(QStringLiteral("reviewId"))) + review.setReviewId(ro.value("reviewId").toString()); + + reviews << review; + } + m_placeReviews.insert(place.placeId(), reviews); } } } @@ -274,10 +325,28 @@ public: QPlaceContentReply *getPlaceContent(const QString &placeId, const QPlaceContentRequest &query) { - Q_UNUSED(placeId) - Q_UNUSED(query) + ContentReply *reply = new ContentReply(this); + if (placeId.isEmpty() || !m_places.contains(placeId)) { + reply->setError(QPlaceReply::PlaceDoesNotExistError, tr("Place does not exist")); + QMetaObject::invokeMethod(reply, "emitError", Qt::QueuedConnection); - return 0; + } else { + if (query.contentType() == QPlaceContent::ReviewType) { + QPlaceContent::Collection collection; + int totalCount = m_placeReviews.value(placeId).count(); + int offset = qMax(query.offset(), 0); + int max = (query.limit() == -1) ? totalCount + : qMin(offset + query.limit(), totalCount); + for (int i = offset; i < max; ++i) + collection.insert(i, m_placeReviews.value(placeId).at(i)); + + reply->setContent(collection); + reply->setTotalCount(totalCount); + } + } + + QMetaObject::invokeMethod(reply, "emitFinished", Qt::QueuedConnection); + return reply; } QPlaceSearchReply *search(const QPlaceSearchRequest &query) @@ -544,6 +613,7 @@ private: QHash<QString, QPlaceCategory> m_categories; QHash<QString, QStringList> m_childCategories; QHash<QString, QStringList> m_placeRecommendations; + QHash<QString, QList<QPlaceReview> > m_placeReviews; }; #endif |