activityfw/activityserviceplugin/tsrc/unittest_activityserviceplugin/src/unittest_activityserviceplugin.cpp
changeset 117 c63ee96dbe5f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/activityserviceplugin/tsrc/unittest_activityserviceplugin/src/unittest_activityserviceplugin.cpp	Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "unittest_activityserviceplugin.h"
+
+#include <QtTest/QtTest>
+#include <QScopedPointer>
+#include <QDebug>
+
+#include <qservicemanager.h>
+
+#include <afstorageglobals.h>
+
+#include <tstestutils.h>
+
+void TestActivityServicePlugin::initTestCase()
+{
+    QServiceManager manager;
+    if (!manager.findServices().contains("ActivityService")) {
+        qDebug() << "ActivityService not found";
+        QVERIFY(QFile::exists(":/activityserviceplugin.xml"));
+        if (!manager.addService(":/activityserviceplugin.xml")) {
+            QFAIL(qPrintable(QString("Failed to add ActivityService: %1").arg(manager.error())));
+        }
+        QVERIFY(manager.findServices().contains("ActivityService"));
+    }
+}
+
+void TestActivityServicePlugin::testActivityClientCreation()
+{
+    QServiceManager manager;
+    QObject *activityClient = manager.loadInterface("com.nokia.qt.activities.ActivityClient");
+    if (!activityClient) qDebug() << "error:" << manager.error();
+    QVERIFY(activityClient);
+    QCOMPARE(activityClient->metaObject()->className(), "AfClient");
+    delete activityClient;
+}
+
+void TestActivityServicePlugin::testActivityManagerCreation()
+{
+    QServiceManager manager;
+    QObject *activityManager = manager.loadInterface("com.nokia.qt.activities.ActivityManager");
+    if (!activityManager) qDebug() << "error:" << manager.error();
+    QVERIFY(activityManager);
+    QCOMPARE(activityManager->metaObject()->className(), "AfManager");
+    delete activityManager;
+}
+
+void TestActivityServicePlugin::testInvalidInterfaceCreation()
+{
+    QServiceManager manager;
+    QObject *invalidInterface = manager.loadInterface("com.nokia.qt.activities.BlahBlahBlah");
+    QVERIFY(!invalidInterface);
+}
+
+void TestActivityServicePlugin::testActivityManagerEmitsDataChangeSignalAfterSavingThroughStorage()
+{
+    QServiceManager manager;
+    QScopedPointer<QObject> activityManager(manager.loadInterface("com.nokia.qt.activities.ActivityManager"));
+    QVERIFY(activityManager.data());
+    
+    QScopedPointer<QObject> activityStorage(manager.loadInterface("com.nokia.qt.activities.Storage"));
+    QVERIFY(activityStorage.data());
+    
+    QSignalSpy dataChangedSpy(activityManager.data(), SIGNAL(dataChanged()));
+    QVERIFY(dataChangedSpy.isValid());    
+    QCOMPARE(dataChangedSpy.count(), 0);
+    
+    {
+        QPixmap screenshot(128, 128);
+        screenshot.fill(Qt::red);
+        QVERIFY(!screenshot.isNull());
+        QVariantHash metadata;
+        metadata.insert(ActivityScreenshotKeyword, screenshot);
+
+        bool invokeResult;
+        bool saveResult;
+        invokeResult = QMetaObject::invokeMethod(
+                            activityStorage.data(), 
+                            "saveActivity", 
+                            Q_RETURN_ARG(bool, saveResult), 
+                            Q_ARG(QString, "Test"), 
+                            Q_ARG(QVariant, "TestData"), 
+                            Q_ARG(QVariantHash, metadata));
+                            
+        QVERIFY(invokeResult);
+        QVERIFY(saveResult);
+    }
+    
+    QVERIFY(dataChangedSpy.count() > 0 || TsTestUtils::waitForSignal(activityManager.data(), SIGNAL(dataChanged()), 1500));
+}