summaryrefslogtreecommitdiff
path: root/tests/auto/geotestplugin/qplacemanagerengine_test.h
diff options
context:
space:
mode:
authorabcd <amos.choy@nokia.com>2012-07-04 16:46:34 +1000
committerQt by Nokia <qt-info@nokia.com>2012-07-12 04:48:28 +0200
commitc7c6cbe48171534511306f72fd57ff5d62979e5e (patch)
tree1335b68bbe9eb17708824afd0bd0cff0526dc715 /tests/auto/geotestplugin/qplacemanagerengine_test.h
parent5fcd5bc9236ad21fe09f458889dbf6e3544ee134 (diff)
downloadqtlocation-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.h78
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