cmmanager/cpdestinationplugin/tsrc/ut/testcpdestinationplugin.cpp
changeset 27 489cf6208544
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/tsrc/ut/testcpdestinationplugin.cpp	Thu May 27 13:17:01 2010 +0300
@@ -0,0 +1,663 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel WLAN AP plugin unit testing.
+*/
+
+#include <HbApplication>
+#include <HbMainWindow>
+#include <HbView>
+#include <HbDialog>
+#include <HbRadioButtonList>
+#include <HbAction>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <QtTest/QtTest>
+#include <cmmanager_shim.h>
+#include <cmconnectionmethod_shim.h>
+#include <cpplugininterface.h>
+#include <cppluginutility.h>
+#include <cpitemdatahelper.h>
+#include <cpsettingformitemdata.h>
+
+//#include "cmapplsettingsui_p.h"
+//#include "cmradiodialog.h"
+//#include "cpdestinationplugin.h"
+
+#include "hbautotest.h"
+#include "testcpdestinationplugin.h"
+
+// -----------------------------------------------------------------------------
+// STATIC TEST DATA
+// -----------------------------------------------------------------------------
+
+static const QString pluginDir =
+    "\\resource\\qt\\plugins\\controlpanel";
+
+static const QString pluginName = "cpdestinationplugin.dll";
+
+// Time to wait before continuing after an UI step
+static const int waitTime = 10;
+
+static const QString navigationButton = "HbNavigationButton";
+
+// UI coordinates
+static const QPoint destinationGroup(175,30);
+static const QPoint internetDestination(175,100);
+static const QPoint internetFirstAp(175,130);
+static const QPoint internetFirstApMove(175,160);
+static const QPoint internetFirstApDelete(175,210);
+static const QPoint internetFirstApShare(175,260);
+
+static const QPoint deleteDialogOk(100,300);
+
+static const QPoint tbButton(175,550);
+static const QPoint arrangeFirstAp(175,30);
+static const QPoint arrangeDragEnd(175,140);
+
+static const QPoint uncatDestination(175,455);
+static const QPoint uncatAp(175,120);
+static const QPoint uncatMenuMove(175,140);
+static const QPoint uncatMenuDelete(175,180);
+
+static const QPoint destDialogOk(100,370);
+static const QPoint destDialogSecond(100,255);
+static const QPoint destDialogThird(100,315);
+static const QPoint destDialogNewDest(100,345);
+
+static const QPoint addDestination(175,410);
+static const QPoint addDialog(175,235);
+static const QPoint addDialogOk(100,300);
+static const QPoint newDestinationRename(175,445);
+static const QPoint newDestinationDelete(175,490);
+
+static const QPoint addDialogKb(175,155);
+static const QPoint addDialogOkKb(100,225);
+
+static const QPoint secondDestination(175,195);
+static const QPoint thirdDestination(175,275);
+static const QPoint fourthDestination(175,355);
+
+
+
+#if 0
+// Destination list item for Connection Method selection
+static const QString dedicatedAccessPoint = "Dedicated access point";
+
+static const QStringList allDestinations = QStringList() <<
+    "Internet" <<
+    "My Snap" <<
+    dedicatedAccessPoint;
+
+static const QStringList allConnectionMethods = QStringList()
+    << "Home WLAN"
+    << "packet data 1"
+    << "packet data 2"
+    << "packet data 3"
+    << "Streaming"
+    << "WLAN IAP 1"
+    << "WLAN IAP 2"
+    << "WLAN IAP 3";
+
+static const QStringList gprsConnectionMethods = QStringList()
+    << "packet data 1"
+    << "packet data 2"
+    << "packet data 3"
+    << "Streaming";
+
+static const QStringList wlanConnectionMethods = QStringList()
+    << "Home WLAN"
+    << "WLAN IAP 1"
+    << "WLAN IAP 2"
+    << "WLAN IAP 3";
+#endif
+
+// -----------------------------------------------------------------------------
+// FRAMEWORK FUNCTIONS
+// -----------------------------------------------------------------------------
+
+/**
+ * Test main function. Runs all test cases.
+ */
+#ifndef TESTCMAPPLSETTINGSUI_NO_OUTPUT_REDIRECT
+int main(int argc, char *argv[])
+{
+    HbApplication app(argc, argv);
+    app.setApplicationName("TestCpDestinationPlugin");
+    
+    char *pass[3];  
+    pass[0] = argv[0];
+    pass[1] = "-o"; 
+    pass[2] = "c:\\data\\TestCpDestinationPlugin.txt";
+ 
+    TestCpDestinationPlugin tc;
+    int res = QTest::qExec(&tc, 3, pass);
+ 
+    return res;
+}
+#else
+QTEST_MAIN(TestCpDestinationPlugin)
+#endif
+
+/**
+ * This function is be called before the first test case is executed.
+ */
+void TestCpDestinationPlugin::initTestCase()
+{
+    mMainWindow = new HbAutoTestMainWindow;
+    mMainWindow->show();
+    
+    // Load plugin
+    QDir dir(pluginDir);
+    QPluginLoader loader(dir.absoluteFilePath(pluginName));
+    mPlugin = QSharedPointer<CpPluginInterface>
+        (qobject_cast<CpPluginInterface *>(loader.instance()));
+    //QVERIFY(mPlugin != NULL);
+
+    
+    // Create destinations view
+    subCreateSettingsView();
+    
+    HbAutoTest::mouseClick(mMainWindow, mView, destinationGroup, waitTime);
+    QTest::qWait(200);
+}
+
+/**
+ * This function is be called after the last test case was executed.
+ */
+void TestCpDestinationPlugin::cleanupTestCase()
+{
+    delete mMainWindow;
+    mMainWindow = 0;
+}
+
+/**
+ * This function is be called before each test case is executed.
+ */
+void TestCpDestinationPlugin::init()
+{
+    // Expand settings group
+   // mTestView->mForm->setExpanded(
+   //     mTestView->mModel->indexFromItem(mTestView->mApSettingsGroupItem),
+    //    true);
+}
+
+/**
+ * This function is be called after each test case is executed.
+ */
+void TestCpDestinationPlugin::cleanup()
+{
+
+}
+
+// -----------------------------------------------------------------------------
+// TEST CASES
+// -----------------------------------------------------------------------------
+void TestCpDestinationPlugin::tcArrangeAps()
+{   
+    // Open Internet destination
+    HbAutoTest::mouseClick(mMainWindow, mView, internetDestination, waitTime);
+    QTest::qWait(500);
+    
+    // Activate arrange mode
+    HbAutoTest::mouseClick(mMainWindow, mView, tbButton, waitTime);
+    QTest::qWait(500);
+    
+    // Drag
+    HbAutoTest::mousePress(mMainWindow, mView, arrangeFirstAp, waitTime);
+    QTest::qWait(300);
+    HbAutoTest::mouseMove(mMainWindow, mView, arrangeDragEnd, waitTime);
+    QTest::qWait(300);
+    HbAutoTest::mouseRelease(mMainWindow, mView, arrangeDragEnd, waitTime);
+    
+    HbAutoTest::mouseClick(mMainWindow, mView, arrangeDragEnd, waitTime);
+    QTest::qWait(500);
+    
+    // Cancel
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+    
+    // Activate arrange mode again
+    HbAutoTest::mouseClick(mMainWindow, mView, tbButton, waitTime);
+    QTest::qWait(500);
+    
+    // Drag
+    HbAutoTest::mousePress(mMainWindow, mView, arrangeFirstAp, waitTime);
+    QTest::qWait(300);
+    HbAutoTest::mouseMove(mMainWindow, mView, arrangeDragEnd, waitTime);
+    QTest::qWait(300);
+    // HbAutoTest::mouseRelease(mMainWindow, mView, arrangeDragEnd, waitTime);
+    
+    HbAutoTest::mouseClick(mMainWindow, mView, arrangeDragEnd, waitTime);
+    QTest::qWait(500);
+    
+    // OK
+    HbAutoTest::mouseClick(mMainWindow, mView, tbButton, waitTime);
+    QTest::qWait(500);
+    
+    // Back to main view
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+    
+}
+
+void TestCpDestinationPlugin::tcMoveAp()
+{   
+    // Open uncategorised aps
+    HbAutoTest::mouseClick(mMainWindow, mView, uncatDestination, waitTime);
+    QTest::qWait(500);
+    
+    // Activate context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, uncatAp, 700);
+    QTest::qWait(50);
+    
+    // Select move
+    HbAutoTest::mouseClick(mMainWindow, mView, uncatMenuMove, waitTime);
+    QTest::qWait(300);
+    
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, destDialogOk, waitTime);
+    QTest::qWait(2000);
+    
+    // Back to destination view
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+}
+
+void TestCpDestinationPlugin::tcShareDeleteAp()
+{
+    // Open Internet destination
+    HbAutoTest::mouseClick(mMainWindow, mView, internetDestination, waitTime);
+    QTest::qWait(500);
+      
+    // Activate context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, internetFirstAp, 700);
+    QTest::qWait(50);
+      
+    // Select share
+    HbAutoTest::mouseClick(mMainWindow, mView, internetFirstApShare, waitTime);
+    QTest::qWait(300);
+      
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, destDialogOk, waitTime);
+    QTest::qWait(2000);
+    
+    // Activate context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, internetFirstAp, 700);
+    QTest::qWait(50);
+          
+    // Select share
+    HbAutoTest::mouseClick(mMainWindow, mView, internetFirstApDelete, waitTime);
+    QTest::qWait(300);
+          
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, deleteDialogOk, waitTime);
+    QTest::qWait(2000);
+      
+    // Back to destination view
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+}
+
+void TestCpDestinationPlugin::tcAddDestination()
+{
+    // Add Destination
+    HbAutoTest::mouseClick(mMainWindow, mView, addDestination, waitTime);
+    QTest::qWait(500);
+      
+    // Click OK -> Error note
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+    
+    // Click OK -> errorNote disappears
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+    
+    // Activate keyboard
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime);
+    QTest::qWait(500);
+        
+    // Activate line-edit
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime);
+    QTest::qWait(500);
+        
+    // Input text
+    HbAutoTest::keyClicks(mMainWindow, "Internet", 0, waitTime);
+    QTest::qWait(2000);
+          
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime);
+    QTest::qWait(500);
+        
+    // Select ok again -> Error note
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+        
+    // Click OK -> errorNote disappears
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+    
+    // Activate keyboard
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime);
+    QTest::qWait(500);
+    
+    // Activate line-edit
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime);
+    QTest::qWait(500);
+    
+    // Input text
+    HbAutoTest::keyClicks(mMainWindow, "foo", 0, waitTime);
+    QTest::qWait(2000);
+      
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime);
+    QTest::qWait(500);
+    
+    // Select ok again
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+}
+
+void TestCpDestinationPlugin::tcDestinationRename()
+{
+    // Open context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, addDestination, 700);
+    QTest::qWait(50);
+      
+    // Click OK -> Error note
+    HbAutoTest::mouseClick(mMainWindow, mView, newDestinationRename, waitTime);
+    QTest::qWait(300);
+    
+    // Click OK -> error note shown
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(300);
+    
+    // Click OK -> errorNote disappears
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+    
+    // Activate keyboard
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime);
+    QTest::qWait(500);
+    
+    // Activate line-edit
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime);
+    QTest::qWait(500);
+    
+    // Input text
+    HbAutoTest::keyClicks(mMainWindow, "Internet", 0, waitTime);
+    QTest::qWait(2000);
+      
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime);
+    QTest::qWait(500);
+    
+    // Select ok again -> Error note
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+    
+    // Click OK -> errorNote disappears
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+        
+    // Activate keyboard
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime);
+    QTest::qWait(500);
+        
+    // Activate line-edit
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime);
+    QTest::qWait(500);
+        
+    // Input text
+    HbAutoTest::keyClicks(mMainWindow, "bar", 0, waitTime);
+    QTest::qWait(2000);
+          
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime);
+    QTest::qWait(500);
+        
+    // Select ok again
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+    
+    // TODO: remove
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+}
+
+void TestCpDestinationPlugin::tcDestinationDelete()
+{
+    // Open context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, addDestination, 700);
+    QTest::qWait(50);
+      
+    // Click OK -> Error note
+    HbAutoTest::mouseClick(mMainWindow, mView, newDestinationDelete, waitTime);
+    QTest::qWait(300);
+    
+    // Click OK -> error note shown
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(1000);  
+  
+    // TODO: remove
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+}
+
+void TestCpDestinationPlugin::tcCreateAndDeleteDestination()
+{
+    // Add Destination
+    HbAutoTest::mouseClick(mMainWindow, mView, addDestination, waitTime);
+    QTest::qWait(500);
+    
+    // Activate keyboard
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime);
+    QTest::qWait(500);
+    
+    // Activate line-edit
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime);
+    QTest::qWait(500);
+    
+    // Input text
+    HbAutoTest::keyClicks(mMainWindow, "foo", 0, waitTime);
+    QTest::qWait(2000);
+      
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime);
+    QTest::qWait(500);
+    
+    // Select ok again
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(500);
+    
+    // Open Internet destination
+    HbAutoTest::mouseClick(mMainWindow, mView, internetDestination, waitTime);
+    QTest::qWait(500);
+          
+    // Activate context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, internetFirstAp, 700);
+    QTest::qWait(50);
+          
+    // Select move
+    HbAutoTest::mouseClick(mMainWindow, mView, internetFirstApMove, waitTime);
+    QTest::qWait(300);
+    
+    // Select destination
+    HbAutoTest::mouseClick(mMainWindow, mView, destDialogNewDest, waitTime);
+    QTest::qWait(300);
+    
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, destDialogOk, waitTime);
+    QTest::qWait(2000);
+    
+    // Back to destination view
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+    
+    // Open context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, addDestination, 700);
+    QTest::qWait(50);
+      
+    // Click OK -> Error note
+    HbAutoTest::mouseClick(mMainWindow, mView, newDestinationDelete, waitTime);
+    QTest::qWait(300);
+    
+    // Click OK -> error note shown
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(1000);  
+  
+    // TODO: remove
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+}
+
+void TestCpDestinationPlugin::tcOpenDestinations()
+{
+    // Open uncategorised aps
+    HbAutoTest::mouseClick(mMainWindow, mView, secondDestination, waitTime);
+    QTest::qWait(500);
+    
+    // Back to destination view
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+    
+    // Open uncategorised aps
+    HbAutoTest::mouseClick(mMainWindow, mView, thirdDestination, waitTime);
+    QTest::qWait(500);
+    
+    // Back to destination view
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+    
+    // Open uncategorised aps
+    HbAutoTest::mouseClick(mMainWindow, mView, fourthDestination, waitTime);
+    QTest::qWait(500);
+    
+    // Back to destination view
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+    
+    // Activate context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, uncatAp, 700);
+    QTest::qWait(50);
+    
+    // TODO: remove
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+}
+
+void TestCpDestinationPlugin::tcDeleteUncat()
+{   
+    // Open uncategorised aps
+    HbAutoTest::mouseClick(mMainWindow, mView, uncatDestination, waitTime);
+    QTest::qWait(500);
+    
+    // Activate context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, uncatAp, 700);
+    QTest::qWait(50);
+    
+    // Select move
+    HbAutoTest::mouseClick(mMainWindow, mView, uncatMenuDelete, waitTime);
+    QTest::qWait(500);
+    
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(2000);
+    
+    // Back to destination view
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+}
+
+void TestCpDestinationPlugin::tcMoveProtected()
+{   
+    // Open Internet destination
+    HbAutoTest::mouseClick(mMainWindow, mView, internetDestination, waitTime);
+    QTest::qWait(500);
+          
+    // Activate context menu
+    HbAutoTest::mouseClick(mMainWindow, mView, internetFirstAp, 700);
+    QTest::qWait(50);
+          
+    // Select move
+    HbAutoTest::mouseClick(mMainWindow, mView, internetFirstApMove, waitTime);
+    QTest::qWait(300);
+    
+    // Select destination
+    HbAutoTest::mouseClick(mMainWindow, mView, destDialogSecond, waitTime);
+    QTest::qWait(300);
+    
+    // Select ok
+    HbAutoTest::mouseClick(mMainWindow, mView, destDialogOk, waitTime);
+    QTest::qWait(2000);
+    
+    HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime);
+    QTest::qWait(2000);
+    
+    // Back to destination view
+    subClickWidget(navigationButton);
+    QTest::qWait(500);
+}
+
+// -----------------------------------------------------------------------------
+// SUB TEST CASES
+// -----------------------------------------------------------------------------
+
+void TestCpDestinationPlugin::subCreateSettingsView()
+{
+    // Create settings view
+    HbView *view = new HbView();
+    CpItemDataHelper *itemDataHelper = new CpItemDataHelper();
+    itemDataHelper->setParent(view);
+    HbDataForm *form = new HbDataForm();
+    HbDataFormModel *model = new HbDataFormModel;
+    CpPluginUtility::addCpItemPrototype(form);
+    QList<CpSettingFormItemData *> list = mPlugin->createSettingFormItemData(*itemDataHelper);
+    HbDataFormModelItem *modelItem = NULL;
+    modelItem = list[0];
+    model->appendDataFormItem(modelItem);
+    form->setModel(model);
+    model->setParent(form);
+    view->setWidget(form);
+    itemDataHelper->bindToForm(form);
+    
+    // Display the view
+    // TODO: connect aboutToClose() signal
+    mMainWindow->addView(view);
+    mMainWindow->setCurrentView(view); 
+    
+    mView = view;
+}
+
+void TestCpDestinationPlugin::subClickWidget(const QString &name)
+{
+    QList<QGraphicsItem *> itemList = mMainWindow->scene()->items();
+
+    QGraphicsItem *target = 0;
+    foreach (QGraphicsItem* item, itemList) {
+        if (item->isWidget()) {
+            QString widgetClassName(static_cast<QGraphicsWidget*>(item)->metaObject()->className());
+            qDebug() << widgetClassName;
+            
+            if (widgetClassName == name) {
+                target = item;
+                //break;
+            }
+        }
+    }
+
+    Q_ASSERT(target);
+    HbAutoTest::mouseClick(mMainWindow, static_cast<HbWidget *>(target));
+}