messagingapp/msgutils/unieditorutils/unieditorplugins/unieditormmsplugin/tsrc/testmmsgplugin/testmmsplugin.cpp
changeset 25 84d9eb65b26f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditormmsplugin/tsrc/testmmsgplugin/testmmsplugin.cpp	Mon May 03 12:29:07 2010 +0300
@@ -0,0 +1,322 @@
+/*
+ * 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 "testmmsplugin.h"
+#include <QtTest/QtTest>
+#include "debugtraces.h"
+
+#include <QTimer>
+#include <QSignalSpy>
+
+#include "convergedmessage.h"
+#include "TestMsg.h"
+#include "convergedmessageid.h"
+#include "unieditormmsplugin.h"
+#include "messageserviceaction.h"
+//---------------------------------------------------------------
+// TestMmsPlugin::initTestCase
+//---------------------------------------------------------------
+void TestMmsPlugin::initTestCase()
+{
+    msgPlugin = new UniEditorMmsPlugin();
+    QVERIFY(msgPlugin != 0);
+    smsId = -1;
+    mmsId = -1;
+}
+
+//---------------------------------------------------------------
+// TestMmsPlugin::cleanupTestCase
+//---------------------------------------------------------------
+void TestMmsPlugin::cleanupTestCase()
+{
+    delete msgPlugin;
+}
+
+//---------------------------------------------------------------
+// TestMmsPlugin::init
+//---------------------------------------------------------------
+
+void TestMmsPlugin::init()
+{
+}
+
+//---------------------------------------------------------------
+// TestMmsPlugin::cleanup
+//---------------------------------------------------------------
+void TestMmsPlugin::cleanup()
+{
+}
+
+//---------------------------------------------------------------
+// TestMmsPlugin::testSendMMS
+//---------------------------------------------------------------
+
+void TestMmsPlugin::testSendMMS()
+{
+
+    //register user defined object to meta system.
+    qRegisterMetaType<ConvergedMessage*> ("ConvergedMessage*");
+    
+
+    createMMSMessageWithAttachmentAndSend();
+     //wait for the response to complete 
+     //as sending a message goes through different stages
+     
+    //Create a smil attachment with image and text
+    createMMSMessageWithSmilTextAndImageAttachmentAndSend();
+   
+    //Create MMS with Normal priority
+    createMMSMessageWithAttachmentAndSend(ETrue);
+}
+
+
+void TestMmsPlugin::createMMSMessageWithSmilTextAndImageAttachmentAndSend()
+    {
+    QString service = TEST_SERVICE_NAME_MMS;
+    QString bodyText = TEST_MSG_BODY;
+    QString subject  = TEST_MSG_SUBJECT;
+    qint64 timeStamp = QDateTime::currentDateTime().toTime_t();
+    
+    QString sender(TEST_SENDER);
+    ConvergedMessageAddress address(sender);
+    ConvergedMessageAttachmentList attachmentList;
+  
+    ConvergedMessageAttachment* attachmentImage = 
+        new ConvergedMessageAttachment(TEST_ATTACHMENT4, ConvergedMessageAttachment::EAttachment);
+    attachmentList.append(attachmentImage);
+    
+    ConvergedMessageAttachment* attachmenttext = 
+            new ConvergedMessageAttachment(TEST_ATTACHMENT5, ConvergedMessageAttachment::EAttachment);
+    attachmentList.append(attachmenttext);
+    
+    ConvergedMessageAttachment* attachmentSmil = 
+                new ConvergedMessageAttachment(TEST_ATTACHMENT3, ConvergedMessageAttachment::ESmil);
+    attachmentList.append(attachmentSmil);
+     
+    
+    
+    ConvergedMessage msg;
+    msg.setMessageType(ConvergedMessage::Mms);
+    msg.setSubject(subject);
+    msg.setTimeStamp(timeStamp);
+    msg.addToRecipient(address);
+    msg.addAttachments(attachmentList);
+    msg.setPriority(ConvergedMessage::Low);
+    
+    long int id = msgPlugin->convertTo(&msg);
+    msgPlugin->send(id);
+
+    }
+
+
+//---------------------------------------------------------------
+// TestMmsPlugin::testMmsReceived
+//---------------------------------------------------------------
+void TestMmsPlugin::testMmsReceived()
+{
+    testReceived(msgPlugin->messageType());  
+    QTest::qWait(5000);
+}
+
+/*
+ * Creates a Smil file with only a text document as attachment
+ */
+ 
+void TestMmsPlugin::createMMSMessageWithAttachmentAndSend(TBool priority)
+    {
+    QString service = TEST_SERVICE_NAME_MMS;
+    QString bodyText = TEST_MSG_BODY;
+    QString subject  = TEST_MSG_SUBJECT;
+    qint64 timeStamp = QDateTime::currentDateTime().toTime_t();
+    
+    QString sender(TEST_SENDER);
+    ConvergedMessageAddress address(sender);
+    ConvergedMessageAttachmentList attachmentList;    
+
+   
+    ConvergedMessageAttachment* attachment2 = 
+            new ConvergedMessageAttachment(TEST_ATTACHMENT2, ConvergedMessageAttachment::ESmil);
+    
+    ConvergedMessageAttachment* attachment = 
+        new ConvergedMessageAttachment(TEST_ATTACHMENT, ConvergedMessageAttachment::EAttachment);
+   
+    attachmentList.append(attachment);
+    
+    attachmentList.append(attachment2);
+    
+    ConvergedMessage msg;
+    msg.setMessageType(ConvergedMessage::Mms);
+    msg.setSubject(subject);
+    msg.setTimeStamp(timeStamp);
+    msg.addToRecipient(address);
+    msg.addAttachments(attachmentList);
+    if(priority == EFalse)
+        {
+        msg.setPriority(ConvergedMessage::Normal);
+        }
+    else
+        {
+        msg.setPriority(ConvergedMessage::High);
+        }
+    
+    //Adding alias
+    ConvergedMessageAddress address1;
+    address1.setAlias(QString(TEST_MSG_RECIEPIENT));
+    msg.addToRecipient(address1);
+    
+    //Adding CC Address
+    QString ccAddress(TEST_CC);
+    ConvergedMessageAddress ccAdd(ccAddress);
+    msg.addCcRecipient(ccAdd);
+    
+    //Adding BCC Address
+    QString bccAddress(TEST_BCC);
+    ConvergedMessageAddress bccAdd(bccAddress);
+    msg.addBccRecipient(bccAdd);
+    
+    long int id = msgPlugin->convertTo(&msg);
+    msgPlugin->send(id);
+    }
+    	
+//---------------------------------------------------------------
+// TestMmsPlugin::testReceived
+//---------------------------------------------------------------
+void TestMmsPlugin::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;
+}
+
+//---------------------------------------------------------------
+// TestMmsPlugin::validateMsg
+//---------------------------------------------------------------
+void TestMmsPlugin::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_SENDER));
+        }
+
+   //     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));
+        }
+    }
+}