phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertplugin/ut_cpdivertplugin.cpp
changeset 27 2f8f8080a020
parent 22 6bb1b21d2484
child 51 f39ed5e045e0
--- a/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertplugin/ut_cpdivertplugin.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertplugin/ut_cpdivertplugin.cpp	Mon May 03 12:31:11 2010 +0300
@@ -37,7 +37,7 @@
 #include "cpdivertplugingroup.h"
 
 
-
+Q_DECLARE_METATYPE(PsCallDivertingCondition)
 Q_EXTERN_C const char * qt_plugin_query_verification_data();
 Q_EXTERN_C ::QObject *  qt_plugin_instance();
 
@@ -48,6 +48,12 @@
     ~CPsetContainer(){};
 };
 
+void fillNumber(QString& number)
+{
+    number = "1234567";
+}
+    
+
 /*!
   UT_CpDivertPlugin::UT_CpDivertPlugin
  */
@@ -55,6 +61,8 @@
     : m_divertplugin(NULL)
 {
     const char * verificationData = qt_plugin_query_verification_data();
+	qRegisterMetaType<PsCallDivertingCondition>(
+        "PsCallDivertingCondition");
 }
 
 /*!
@@ -62,6 +70,8 @@
  */
 UT_CpDivertPlugin::~UT_CpDivertPlugin()
 {
+    delete m_divertpluginGroup;
+    delete m_helper;
     delete m_divertplugin;
 }
 
@@ -95,15 +105,15 @@
 void UT_CpDivertPlugin::cleanup()
 {
     reset();
+    delete m_divertpluginGroup;
+    m_divertpluginGroup = NULL;
+
+    delete m_helper;
+    m_helper = NULL;
     
     delete m_divertplugin;
     m_divertplugin = NULL;
-    
-    delete m_divertpluginGroup;
-    m_divertpluginGroup = NULL;
-    
-    delete m_helper;
-    m_helper = NULL;
+
 }
 
 /*!
@@ -125,7 +135,7 @@
     
     expect("PSetWrapper::callDivertingWrapper").returns(&tmpDivWrapper); 
     
-    CpDivertPlugin* p = (CpDivertPlugin*)qt_plugin_instance();
+    CpDivertPlugin* p = (CpDivertPlugin*)qt_plugin_instance(); // Get static
     QList<CpSettingFormItemData*> list;
     list.append(p->createSettingFormItemData(itemDataHelper));
     qDeleteAll(list);
@@ -140,35 +150,37 @@
     //except user cancels
     appendAction("All voice calls:", selectAction, "Cancel");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->setContentWidgetData("number", "");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->setContentWidgetData(
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->setContentWidgetData("number", "");
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->setContentWidgetData(
             "state", CpDivertSelectionCustomitem::Disabled);
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
     QVERIFY(verify());
     
-    //except user selects vmb and inserts number
+    //except user selects vmb
     appendAction("All voice calls:", selectItem, "txt_phone_setlabel_voice_mbx");
-    appendAction("Voice mail box number:", insertText, "12345");
-    appendAction("Voice mail box number:", selectAction, "OK");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
+    expect("PSetCallDivertingWrapper::getVoiceMailBoxNumber").willOnce(invoke(fillNumber));
     expect("SsSettingsWrapper::get");
     expect("PSetCallDivertingWrapper::setCallDiverting");
     expect("CpPhoneNotes::noteShowing").returns(false);
     expect("CpPhoneNotes::showGlobalProgressNote");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
+    QVERIFY(verify()); // Verify item click
     PSCallDivertingCommand command;
     command.iNumber = "12345";
     command.iStatus = DivertingStatusActive;
-    command.iCondition = m_divertpluginGroup->m_DataItemAllVoiceCalls->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceAllCalls->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::showGlobalNote");
     m_divertpluginGroup->handleDivertingChanged(command, false);
     expect("CpPhoneNotes::cancelNote");
     m_divertpluginGroup->divertRequestProcessed();
-    QVERIFY(verify());
+    QVERIFY(verify()); // Verify result processing
 
     //except user selects one of the default numbers
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->setContentWidgetData("number","");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->setContentWidgetData(
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->setContentWidgetData("number","");
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->setContentWidgetData(
             "state", CpDivertSelectionCustomitem::Disabled);
     appendAction("All voice calls:", selectItem, "0401234567");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
@@ -176,10 +188,12 @@
     expect("PSetCallDivertingWrapper::setCallDiverting");
     expect("CpPhoneNotes::noteShowing").returns(false);
     expect("CpPhoneNotes::showGlobalProgressNote");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
     command.iNumber = "0401234567";
     command.iStatus = DivertingStatusActive;
-    command.iCondition = m_divertpluginGroup->m_DataItemAllVoiceCalls->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceAllCalls->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::cancelNote");
     expect("CpPhoneNotes::showGlobalNote");
     expect("PSetCallDivertingWrapper::setNewDefaultNumber").with(QString("0401234567"));
@@ -194,10 +208,12 @@
     expect("PSetCallDivertingWrapper::setCallDiverting"); // Disable divert
     expect("CpPhoneNotes::noteShowing").returns(false);
     expect("CpPhoneNotes::showGlobalProgressNote");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
     command.iNumber = "";
     command.iStatus = DivertingStatusInactive;
-    command.iCondition = m_divertpluginGroup->m_DataItemAllVoiceCalls->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceAllCalls->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::showGlobalNote");
     m_divertpluginGroup->handleDivertingChanged(command, false);
     expect("CpPhoneNotes::cancelNote");
@@ -209,7 +225,7 @@
     appendAction("Number:", insertText, "12345");
     appendAction("Number:", selectAction, "Cancel");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
     QVERIFY(verify());
 }
 
@@ -225,32 +241,37 @@
     expect("CpPhoneNotes::noteShowing").returns(false);
     expect("CpPhoneNotes::showGlobalProgressNote");
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemAllVoiceCalls));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceAllCalls));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfBusy));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfBusy));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfNotAnswered));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfNotAnswered));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfOutOfReach));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfOutOfReach));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfNotAvailable));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfNotAvailable));
     
     QList<PSCallDivertingStatus*> list;
     PSCallDivertingStatus divertStatus;
     list.append(&divertStatus);
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemAllVoiceCalls->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceAllCalls->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemIfBusy->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfBusy->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemIfNotAnswered->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemIfOutOfReach->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfOutOfReach->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemIfNotAvailable->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfNotAvailable->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
     
@@ -258,15 +279,15 @@
 
     // Test, Do not check status again
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemAllVoiceCalls));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceAllCalls));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfBusy));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfBusy));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfNotAnswered));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfNotAnswered));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfOutOfReach));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfOutOfReach));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfNotAvailable));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfNotAvailable));
     
 
     QVERIFY(verify());
@@ -280,10 +301,10 @@
     appendAction("If not answered:", selectItem, "0401234567");
     appendAction("Time out", selectAction, "Cancel");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
-    m_divertpluginGroup->m_DataItemIfNotAnswered->setContentWidgetData("number", "");
-    m_divertpluginGroup->m_DataItemIfNotAnswered->setContentWidgetData(
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->setContentWidgetData("number", "");
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->setContentWidgetData(
             "state", CpDivertSelectionCustomitem::Disabled);
-    m_divertpluginGroup->m_DataItemIfNotAnswered->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->thisItemClicked();
     QVERIFY(verify());
     
     appendAction("If not answered:", selectItem, "Other number");
@@ -294,12 +315,14 @@
     expect("PSetCallDivertingWrapper::getDefaultNumbers");    
     expect("SsSettingsWrapper::get");
     expect("PSetCallDivertingWrapper::setCallDiverting");
-    m_divertpluginGroup->m_DataItemIfNotAnswered->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->thisItemClicked();
     PSCallDivertingCommand command;
     command.iNumber = "12345";
     command.iNoReplyTimer = 15;
     command.iStatus = DivertingStatusActive;
-    command.iCondition = m_divertpluginGroup->m_DataItemIfNotAnswered->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::showGlobalNote");
     m_divertpluginGroup->handleDivertingChanged(command, false);
     expect("CpPhoneNotes::cancelNote");
@@ -308,11 +331,13 @@
     
     expect("SsSettingsWrapper::get");
     expect("PSetCallDivertingWrapper::setCallDiverting");
-    m_divertpluginGroup->m_DataItemIfNotAnswered->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->thisItemClicked();
     command.iNumber = "";
     command.iNoReplyTimer = 0;
     command.iStatus = DivertingStatusInactive;
-    command.iCondition = m_divertpluginGroup->m_DataItemIfNotAnswered->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::showGlobalNote");
     m_divertpluginGroup->handleDivertingChanged(command, false);
     expect("CpPhoneNotes::cancelNote");
@@ -329,31 +354,42 @@
     PSCallDivertingCommand c;
     
     c.iStatus = DivertingStatusActive;
+    c.iServiceGroup = ServiceGroupAllTeleservices;
     bool bRet = false;
     expect("PSetCallDivertingWrapper::setNewDefaultNumber");
     expect("Tools::voipSupported").returns(bRet);
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
-    expect("PSetCallDivertingWrapper::setNewDefaultNumber");
+    QVERIFY(verify());
+    
     bRet = true;
-    c.iServiceGroup = ServiceGroupVoice;
+    c.iServiceGroup = ServiceGroupAllTeleservices;
+    c.iCondition = DivertConditionUnconditional;
+    expect("PSetCallDivertingWrapper::setNewDefaultNumber");
     expect("Tools::voipSupported").returns(bRet);
     m_divertpluginGroup->handleDivertingChanged(c, false);
     
+    QVERIFY(verify());
+    
     c.iStatus = DivertingStatusInactive;
+    c.iCondition = DivertConditionBusy;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     m_divertpluginGroup->handleDivertingChanged(c, false);
     
     c.iStatus = DivertingStatusNotRegistered;
+    c.iCondition = DivertConditionNoReply;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
     c.iStatus = DivertingStatusNotProvisioned;
+    c.iCondition = DivertConditionNotReachable;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
     c.iStatus = DivertingStatusUnknown;
+    c.iCondition = DivertConditionAllCalls;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
     c.iStatus = (PsCallDivertingStatus)5;
+    c.iCondition = DivertConditionAllConditionalCases;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
     QVERIFY(verify());
@@ -415,6 +451,7 @@
     if (!actionQueue.count()) {
         startTimer(2000);
     }
+    qDebug() << "appendAction(" << dialog << actionType << action <<")";
     actionQueue.append(new dialogAction(dialog, actionType, action));
 }
 
@@ -423,6 +460,7 @@
  */
 void UT_CpDivertPlugin::executeAction( const dialogAction &action )
 {
+    qDebug() << "executeAction(" << action.dialog << action.type << action.item <<")";
     switch (action.type) {
     case selectAction:
         doAndVerifyAction(action.dialog, action.item);