messagingapp/msgutils/unieditorutils/unieditorplugins/unieditorsmsplugin/tsrc/testsmsgplugin/testsmsplugin.cpp
changeset 25 84d9eb65b26f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditorsmsplugin/tsrc/testsmsgplugin/testsmsplugin.cpp	Mon May 03 12:29:07 2010 +0300
@@ -0,0 +1,249 @@
+/*
+ * 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 "testsmsplugin.h"
+#include <QtTest/QtTest>
+#include "debugtraces.h"
+
+#include <QTimer>
+#include <QSignalSpy>
+
+#include "convergedmessage.h"
+#include "TestMsg.h"
+#include "convergedmessageid.h"
+#include "unieditorsmsplugin.h"
+#include "messageserviceaction.h"
+//---------------------------------------------------------------
+// TestSmsPlugin::initTestCase
+//---------------------------------------------------------------
+void TestSmsPlugin::initTestCase()
+{
+    msgPlugin = new UniEditorSmsPlugin();
+    testMsg = new TestMsg();
+  //  QVERIFY(msgPlugin != 0);
+    smsId = -1;
+    mmsId = -1;
+}
+
+//---------------------------------------------------------------
+// TestSmsPlugin::cleanupTestCase
+//---------------------------------------------------------------
+void TestSmsPlugin::cleanupTestCase()
+{
+    delete msgPlugin;
+    delete testMsg;
+}
+
+//---------------------------------------------------------------
+// TestSmsPlugin::init
+//---------------------------------------------------------------
+
+void TestSmsPlugin::init()
+{
+}
+
+//---------------------------------------------------------------
+// TestSmsPlugin::cleanup
+//---------------------------------------------------------------
+void TestSmsPlugin::cleanup()
+{
+}
+
+//---------------------------------------------------------------
+// TestSmsPlugin::testSendSMS
+//---------------------------------------------------------------
+void TestSmsPlugin::testSendReceiveSMS()
+{ 
+    testMsg->createSCSettings();
+    
+    testMsg->initSimTsyL();
+    //TODO: Should uncomment the watcher code below while executing the test case in text shell mode. 
+    //Also the watcher code should be commented while executing in UI mode.
+  /*  RProcess watcherProcess;
+    _LIT(KWatcherExe, "z:\\system\\libs\\watcher.exe");
+    User::LeaveIfError(watcherProcess.Create(KWatcherExe, KNullDesC));
+    watcherProcess.Resume();
+    QTest::qWait(5000);*/
+    TBool result = msgPlugin->validateService(ETrue);
+    result = msgPlugin->validateService(EFalse);
+    result = msgPlugin->isServiceValid();
+    createAndSend(msgPlugin->messageType());
+    testReceived(msgPlugin->messageType());
+}
+
+//---------------------------------------------------------------
+// TestSmsPlugin::createAndSend
+//---------------------------------------------------------------
+void TestSmsPlugin::createAndSend(int type)
+{
+
+    ConvergedMessage message;
+    message.setMessageType((ConvergedMessage::MessageType) type);
+    message.setBodyText(QString(TEST_MSG_BODY));
+    ConvergedMessageAddress address1;
+    address1.setAddress(QString(TEST_MSG_TO3));
+    
+    message.addToRecipient(address1);
+    message.setPriority(ConvergedMessage::Normal);
+    if (type == ConvergedMessage::Mms)
+    {
+        ConvergedMessageAddress address2;
+        address2.setAddress(QString(TEST_MSG_FROM2));
+        address2.setAlias(QString(TEST_MSG_ALIAS2));
+        message.addCcRecipient(address2);
+        message.addBccRecipient(address2);
+
+        message.setSubject(QString(TEST_MSG_SUBJECT));
+        message.setPriority(ConvergedMessage::Normal);
+    }
+
+    int ret = -1;
+    QBENCHMARK 
+    {
+    long int id = msgPlugin->convertTo(&message);
+    msgPlugin->send(id);
+    }
+}
+	
+//---------------------------------------------------------------
+// TestSmsPlugin::testReceived
+//---------------------------------------------------------------
+void TestSmsPlugin::testReceived(int type)
+{
+MessageServiceAction* messageAction = new MessageServiceAction(this);    
+    QVERIFY(messageAction != 0);
+
+    //register user defined object to meta system.
+    qRegisterMetaType<ConvergedMessage*>("ConvergedMessage*");
+
+    //signal spy.
+    //listen to added event
+    QSignalSpy spyAdd( messageAction,
+            SIGNAL(messageAdded(ConvergedMessage*, QString)));
+    //signal spy.
+    //listen to updated event
+        QSignalSpy spyUpdate( messageAction,
+                SIGNAL(messageUpdated(ConvergedMessage*, QString)));
+    //will force stub_clientmanager to emit messageUpdated.
+    messageAction->registerForNotification();
+    //register user defined object to meta system.
+
+    // wait for the response to come
+    QTest::qWait(5000);
+
+    //check signals
+    int countAdd = -1;
+    countAdd = spyAdd.count();
+
+    ConvergedMessage* message = 0;
+    QString serviceId("");
+    
+    if (countAdd)
+    {
+        //verify added event
+        void * temp = const_cast<void*> (spyAdd.at(0).at(0).data());
+        message = *reinterpret_cast<ConvergedMessage*(*)> (temp);
+        serviceId = spyAdd.at(0).at(1).toString();
+        QVERIFY(message != 0);
+        validateMsg(*message, serviceId);
+    }
+
+    int countUpdate = -1;
+    countUpdate = spyUpdate.count();
+    message = 0;
+
+    for (int i = countUpdate; i > 0; --i)
+    {
+        //verify updated event
+        void * temp = const_cast<void*> (spyUpdate.at(i-1).at(0).data());
+        message = *reinterpret_cast<ConvergedMessage*(*)> (temp);
+        if (ConvergedMessage::Inbox == message->location())
+        {
+            serviceId = spyUpdate.at(i-1).at(1).toString();
+            break;
+        }
+    }
+    if (message)
+    {
+        validateMsg(*message, serviceId);
+    }
+    delete message;
+}
+
+//---------------------------------------------------------------
+// TestSmsPlugin::validateMsg
+//---------------------------------------------------------------
+void TestSmsPlugin::validateMsg(const ConvergedMessage& message,
+                                const QString& serviceId)
+{
+#ifdef _DEBUG_TRACES_
+		qDebug() << "....message received.....";
+#endif
+
+    //process incoming messages
+    if (message.location() == ConvergedMessage::Inbox)
+    {
+        int msgId;
+        if (message.id())
+        {
+            msgId = message.id()->getId();
+        }
+        ConvergedMessageAddressList array = message.toAddressList();
+        if (array.count() > 0)
+        {
+            if (array[0])
+                QCOMPARE(array[0]->address(),QString(TEST_MSG_FROM1));
+        }
+        ConvergedMessageAddress *fromAddr = message.fromAddress();
+        if (fromAddr)
+        {
+            QCOMPARE(fromAddr->address(),QString(TEST_MSG_FROM1));
+        }
+
+        QCOMPARE(serviceId,QString(TEST_SERVICE_ID));
+
+        if (message.messageType() == ConvergedMessage::Mms)
+        {
+            mmsId = msgId;
+            QCOMPARE(message.subject(), QString(TEST_MSG_SUBJECT));
+        }
+        else if (message.messageType() == ConvergedMessage::Sms)
+        {
+            smsId = msgId;
+            QCOMPARE(message.bodyText(), QString(TEST_MSG_BODY));
+        }
+    }
+    else if (message.location() == ConvergedMessage::Sent)
+    {
+        ConvergedMessageAddressList array = message.toAddressList();
+        if (array.count() > 0)
+        {
+            if (array[0])
+                QCOMPARE(array[0]->address(),QString(TEST_MSG_FROM1));
+        }
+
+        QCOMPARE(serviceId,QString(TEST_SERVICE_ID));
+
+        if (message.messageType() == ConvergedMessage::Mms)
+        {
+            QCOMPARE(message.subject(), QString(TEST_MSG_SUBJECT));
+        }
+        else if (message.messageType() == ConvergedMessage::Sms)
+        {
+            QCOMPARE(message.bodyText(), QString(TEST_MSG_BODY));
+        }
+    }
+}