activityfw/activityserviceplugin/tsrc/unittest_activityserviceplugin/src/unittest_activityserviceplugin.cpp
author Jaakko Haukipuro (Nokia-MS/Oulu) <Jaakko.Haukipuro@nokia.com>
Thu, 16 Sep 2010 12:11:40 +0100
changeset 117 c63ee96dbe5f
permissions -rw-r--r--
Missing activityfw and taskswitcher components - fix for Bug 3670

/*
* 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));
}