logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp
changeset 0 4a5361db8937
child 2 7119b73b84d6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp	Tue May 04 12:39:37 2010 +0300
@@ -0,0 +1,434 @@
+/*
+* 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:
+*
+*/
+
+//USER
+#include "logsbaseview.h"
+#include "ut_logsbaseview.h"
+#include "logscomponentrepository.h"
+#include "qthighway_stub_helper.h"
+#include "logscall.h"
+#include "logsmessage.h"
+#include "logscontact.h"
+#include "hbstubs_helper.h"
+#include "logsrecentcallsview.h"
+
+//SYSTEM
+#include <QtTest/QtTest>
+#include <hbmainwindow.h>
+#include <hbaction.h>
+#include <hbinstance.h>
+#include <hbmenu.h>
+#include <dialpad.h>
+#include <hblineedit.h>
+#include <hblistviewitem.h>
+#include <hblistview.h>
+#include <QStringListModel>
+
+void UT_LogsBaseView::initTestCase()
+{
+    mMainWindow = new HbMainWindow();
+    mViewManager = new LogsViewManagerStub(*mMainWindow);
+}
+
+void UT_LogsBaseView::cleanupTestCase()
+{
+    delete mMainWindow;
+    delete mViewManager;
+}
+
+void UT_LogsBaseView::init()
+{
+    mRepository = new LogsComponentRepository( *mViewManager );
+    mBaseView = new LogsBaseView( LogsRecentViewId, *mRepository, *mViewManager );
+}
+
+void UT_LogsBaseView::cleanup()
+{
+    delete mBaseView;
+    mBaseView = 0;
+    delete mRepository;
+    mRepository = 0;
+}
+
+void UT_LogsBaseView::testConstructor()
+{
+    QVERIFY( mBaseView );
+    QVERIFY( mBaseView->mSoftKeyBackAction );
+    QVERIFY( !mBaseView->mShowFilterMenu );
+    QVERIFY( !mBaseView->mInitialized );
+    QVERIFY( mBaseView->mActionMap.isEmpty() );
+    QVERIFY( mBaseView->viewId() == LogsRecentViewId );
+    QVERIFY( mBaseView->mDialpad );
+    QVERIFY( !mBaseView->mCall );
+    QVERIFY( !mBaseView->mMessage );
+    QVERIFY( !mBaseView->mContact );
+    QVERIFY( !mBaseView->mCallTypeMapper );
+}
+
+void UT_LogsBaseView::testActivated()
+{
+    mBaseView->activated(false, QVariant());
+    QVERIFY( !mBaseView->mDialpad->isVisible() );
+    QVERIFY( mBaseView->mInitialized );
+    QVERIFY( !mBaseView->mShowFilterMenu );
+    QVERIFY( mBaseView->mActionMap.count() == 4 );
+
+    mBaseView->activated(true, QVariant());
+    QVERIFY( mBaseView->mDialpad->isOpen() );
+}
+
+void UT_LogsBaseView::testDeactivated()
+{
+    mBaseView->deactivated(); // NOP
+}
+
+void UT_LogsBaseView::testResetView()
+{
+    // Opened dialpad is closed and text in it is cleared
+    mBaseView->mDialpad->mIsOpen = true;
+    mBaseView->mDialpad->mLineEdit->setText("testing");
+    mBaseView->resetView();
+    QVERIFY( !mBaseView->mDialpad->mIsOpen );
+    QVERIFY( mBaseView->mDialpad->mLineEdit->text() == "" );
+    
+    // Text is cleared even if dialpad would be closed
+    mBaseView->mDialpad->mLineEdit->setText("testingagain");
+    mBaseView->resetView();
+    QVERIFY( !mBaseView->mDialpad->mIsOpen );
+    QVERIFY( mBaseView->mDialpad->mLineEdit->text() == "" );
+}
+
+void UT_LogsBaseView::testShowFilterMenu()
+{
+    HbStubHelper::reset();
+    //no context menu
+    QVERIFY( !mBaseView->mShowFilterMenu );
+    mBaseView->showFilterMenu();
+    QVERIFY( !HbStubHelper::menuShown() );
+    
+    //contect menu exists
+    mBaseView->mShowFilterMenu = new HbMenu();
+    QVERIFY( mBaseView->mShowFilterMenu );
+    mBaseView->showFilterMenu();
+    QVERIFY( HbStubHelper::menuShown() );
+    delete mBaseView->mShowFilterMenu;
+    mBaseView->mShowFilterMenu = 0;
+}
+
+void  UT_LogsBaseView::testOpenDialpad()
+{
+    QVERIFY( !mBaseView->mDialpad->isOpen() );
+    mBaseView->openDialpad();
+    QVERIFY( mBaseView->mDialpad->isOpen() );    
+}
+
+void  UT_LogsBaseView::testSetDialpadPostion()
+{
+    QPointF pos = mBaseView->mDialpad->pos();
+    HbMainWindow& window = mBaseView->mViewManager.mainWindow();
+    
+    window.setOrientation( Qt::Horizontal );
+    mBaseView->setDialpadPosition();
+    QVERIFY( pos != mBaseView->mDialpad->pos() );
+    pos = mBaseView->mDialpad->pos();
+    
+    window.setOrientation( Qt::Vertical );
+    mBaseView->setDialpadPosition();
+    QVERIFY( pos != mBaseView->mDialpad->pos() );
+}
+
+void  UT_LogsBaseView::testDialpadClosed()
+{
+    mBaseView->mDialpad->editor().setText( QString("hello") );
+    mBaseView->dialpadClosed();
+    QVERIFY( mBaseView->mDialpad->editor().text().isEmpty() );
+}
+
+
+void  UT_LogsBaseView::testDialpadEditorTextChanged()
+{   
+    //text editor is one character long
+    mBaseView->mDialpad->editor().setText( QString("h") );
+    mBaseView->dialpadEditorTextChanged();
+    QVERIFY( mViewManager->mViewId == LogsMatchesViewId );
+    
+    mViewManager->reset();
+    mBaseView->mDialpad->mIsCallButtonEnabled = true;
+    mBaseView->mDialpad->editor().setText( QString("") );
+    mBaseView->dialpadEditorTextChanged();
+    QVERIFY( mViewManager->mViewId == LogsUnknownViewId );
+    QVERIFY( !mBaseView->mDialpad->mIsCallButtonEnabled );
+}
+
+void  UT_LogsBaseView::testChangeFilter()
+{
+    QVERIFY( mViewManager->mViewId == LogsUnknownViewId );
+    HbAction*  action = new HbAction();
+    action->setObjectName(logsShowFilterMissedMenuActionId);
+    mBaseView->changeFilter(action);
+    QVERIFY( mViewManager->mViewId == LogsRecentViewId );
+}
+
+void UT_LogsBaseView::testModel()
+{
+    QVERIFY( !mBaseView->model() );
+}
+
+void UT_LogsBaseView::testOpenContactsApp()
+{
+    QtHighwayStubHelper::reset();
+    mBaseView->openContactsApp();
+    QVERIFY( QtHighwayStubHelper::service() == "com.nokia.services.phonebookappservices.Launch" );
+    QVERIFY( QtHighwayStubHelper::message() == "launch()" );
+}
+
+
+void UT_LogsBaseView::testInitiateCallback()
+{
+    LogsCall::resetTestData();
+    //call can't be created
+    QVERIFY( !mBaseView->mCall );
+    mBaseView->initiateCallback(QModelIndex());
+    QVERIFY( LogsCall::lastCalledFuntion().isEmpty() );
+    
+    //call can be created should be tested in derived class    
+}
+
+void UT_LogsBaseView::testInitiateCall()
+{
+    LogsCall::resetTestData();
+    //no call
+    QVERIFY( !mBaseView->mCall );
+    mBaseView->initiateCall(LogsCall::TypeLogsVoiceCall);
+    QVERIFY( LogsCall::lastCalledFuntion().isEmpty() );
+    
+    //call exists
+    mBaseView->mCall = new LogsCall();
+    mBaseView->initiateCall(LogsCall::TypeLogsVideoCall);
+    QVERIFY( LogsCall::lastCalledFuntion() == QString("call") );
+    QVERIFY( mBaseView->mCall->mTestLastCallType == LogsCall::TypeLogsVideoCall );
+}
+
+void UT_LogsBaseView::testShowListItemMenu()
+{
+    HbStubHelper::reset();
+
+    mBaseView->mDialpad->openDialpad();
+    //menu doen't have any actions
+    HbListViewItem* item = new HbListViewItem();
+    mBaseView->showListItemMenu( item, QPointF() );
+    QVERIFY( HbStubHelper::widgetActionsCount() == 0 );
+    QVERIFY( !HbStubHelper::menuShown() );
+    //check that dialpad has closed
+    QVERIFY( !mBaseView->mDialpad->isVisible() );
+    
+    //menu has actions and can be executed should be tested in derived class
+ }
+
+void UT_LogsBaseView::testPopulateListItemMenu()
+{
+    HbStubHelper::reset();
+    //no call/message/contact, menu has not actions
+    HbMenu menu;
+    mBaseView->populateListItemMenu(menu);
+    QVERIFY( HbStubHelper::widgetActionsCount() == 0 );
+    
+    //call, message and contact exist, menu has actions
+    mBaseView->mCall = new LogsCall();
+    mBaseView->mMessage = new LogsMessage();
+    mBaseView->mContact = new LogsContact();
+    mBaseView->populateListItemMenu(menu);
+    QVERIFY( HbStubHelper::widgetActionsCount() == 5 );
+}
+
+
+
+void UT_LogsBaseView::testCloseEmptyMenu()
+{
+    LogsRecentCallsView* view = mRepository->recentCallsView();
+    
+    //visible actions exist
+    QVERIFY( view->menu()->actions().count() > 0 );
+    HbStubHelper::setWidgetOpen(true);
+    view->closeEmptyMenu();
+    QVERIFY(HbStubHelper::isWidgetOpen());
+    
+    //no visible actions
+    foreach (QAction* action, view->menu()->actions()) {
+        action->setVisible(false);
+    }
+    view->closeEmptyMenu();
+    QVERIFY(!HbStubHelper::isWidgetOpen());
+    
+    //no actions
+    HbStubHelper::setWidgetOpen(true);
+    view->menu()->actions().clear();
+    view->closeEmptyMenu();
+    QVERIFY(!HbStubHelper::isWidgetOpen());
+}
+
+void UT_LogsBaseView::testSaveContact()
+{
+    //no contact, no actions
+    mBaseView->saveContact();
+    
+    //contact exists, popup would be shown
+    mBaseView->mContact = new LogsContact();
+    mBaseView->saveContact();    
+}
+
+void UT_LogsBaseView::testUpdateCall()
+{
+    mBaseView->mCall = new LogsCall();
+    mBaseView->updateCall( QModelIndex() );
+    QVERIFY( !mBaseView->mCall );
+}
+
+void UT_LogsBaseView::testUpdateMessage()
+{    
+    mBaseView->mMessage = new LogsMessage();
+    mBaseView->updateMessage( QModelIndex() );
+    QVERIFY( !mBaseView->mMessage );
+}
+
+void UT_LogsBaseView::testUpdateContact()
+{
+    mBaseView->mContact = new LogsContact();
+    mBaseView->updateContact( QModelIndex() );
+    QVERIFY( !mBaseView->mContact );
+}
+
+void UT_LogsBaseView::testActivateEmptyListIndicator()
+{
+    QStringListModel model;
+    
+    // Label not in repository
+    QVERIFY( !mBaseView->mEmptyListLabel );
+    mBaseView->activateEmptyListIndicator(&model);
+    QVERIFY( !mBaseView->mEmptyListLabel );
+    
+    // Empty model, label is set visible
+    mRepository->recentCallsView();
+    QVERIFY( !mBaseView->mEmptyListLabel );
+    mBaseView->activateEmptyListIndicator(&model);
+    QVERIFY( mBaseView->mEmptyListLabel );
+    
+    // Label exists already, situation does not change
+    mBaseView->activateEmptyListIndicator(&model);
+    QVERIFY( mBaseView->mEmptyListLabel );
+    
+    // Null list does nothing
+    mBaseView->activateEmptyListIndicator(0);
+    QVERIFY( mBaseView->mEmptyListLabel );
+}
+
+void UT_LogsBaseView::testDeactivateEmptyListIndicator()
+{
+    QVERIFY( !mBaseView->mEmptyListLabel );
+    mBaseView->deactivateEmptyListIndicator(0);
+    HbLabel label;
+    mBaseView->mEmptyListLabel = &label;
+    mBaseView->deactivateEmptyListIndicator(0);
+    QVERIFY( mBaseView->mEmptyListLabel ); // Label not removed at deactivation
+}
+
+void UT_LogsBaseView::testUpdateEmptyListLabelVisibility()
+{
+     // Base view does not have model, nothing happens
+    mBaseView->updateEmptyListLabelVisibility();
+}
+
+void UT_LogsBaseView::testUpdateListLayoutName()
+{
+    mBaseView->mViewManager.mainWindow().setOrientation( Qt::Vertical );
+    HbListView list;
+
+    //default layout
+    list.setLayoutName("dummy");
+    mBaseView->updateListLayoutName(list);
+    QVERIFY( list.layoutName() == logsListDefaultLayout );
+    
+    //same layout, not updated
+    mBaseView->updateListLayoutName(list);
+    QVERIFY( list.layoutName() == logsListDefaultLayout );
+    
+    //landscape without dialpad
+    mBaseView->mViewManager.mainWindow().setOrientation( Qt::Horizontal );
+    mBaseView->updateListLayoutName(list);
+    QVERIFY( list.layoutName() == logsListLandscapeLayout );
+    
+    //landscape with dialpad
+    mBaseView->mDialpad->openDialpad();
+    mBaseView->updateListLayoutName(list);
+    QVERIFY( list.layoutName() == logsListLandscapeDialpadLayout );
+    
+    //landscape with dialpad, ignoreDialpad is true
+    mBaseView->updateListLayoutName(list, true);
+    QVERIFY( list.layoutName() == logsListDefaultLayout );
+
+    //landscape without dialpad, ignoreDialpad is true
+    mBaseView->mDialpad->closeDialpad();
+    mBaseView->updateListLayoutName(list, true);
+    QVERIFY( list.layoutName() == logsListLandscapeLayout );
+}
+
+void UT_LogsBaseView::testUpdateListSize()
+{
+    mBaseView->mLayoutSectionName = "dummy";
+    
+    //default section is loaded
+    mBaseView->mViewManager.mainWindow().setOrientation( Qt::Vertical );
+    mBaseView->mDialpad->closeDialpad();
+    mBaseView->updateListSize();
+    QVERIFY( mBaseView->mLayoutSectionName == logsViewDefaultSection );
+    
+    //same section again, not loaded
+    mBaseView->updateListSize();
+    QVERIFY( mBaseView->mLayoutSectionName == logsViewDefaultSection );
+
+    //portrait with dialpad
+    mBaseView->mDialpad->openDialpad();
+    mBaseView->updateListSize();
+    QVERIFY( mBaseView->mLayoutSectionName == logsViewPortraitDialpadSection );
+    
+    //landscape with dialpad
+    mBaseView->mViewManager.mainWindow().setOrientation( Qt::Horizontal );
+    mBaseView->updateListSize();
+    QVERIFY( mBaseView->mLayoutSectionName == logsViewLandscapeDialpadSection );
+}
+
+void UT_LogsBaseView::testHandleOrientationChanged()
+{
+    //dialpad position recalculated
+    QPointF pos;
+    mBaseView->mDialpad->setPos(pos);    
+    mBaseView->mViewManager.mainWindow().setOrientation( Qt::Horizontal );
+    mBaseView->handleOrientationChanged();
+    QVERIFY( pos != mBaseView->mDialpad->pos() );
+}
+
+void UT_LogsBaseView::testHandleExit()
+{
+    mViewManager->reset();
+    mBaseView->handleExit();
+    QVERIFY( mViewManager->mExitCalled );
+}
+
+void UT_LogsBaseView::testIsExitAllowed()
+{
+    QVERIFY( mBaseView->isExitAllowed() );
+}