activityfw/activityserviceplugin/tsrc/unittest_activityserviceplugin/src/unittest_activityserviceplugin.cpp
/*
* 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));
}