logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp
changeset 2 7119b73b84d6
parent 0 4a5361db8937
child 4 e52d42f9500c
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp	Tue May 04 12:39:37 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp	Fri May 14 15:52:41 2010 +0300
@@ -149,7 +149,7 @@
     view->activated(false, QVariant(LogsServices::ViewAll));
     QVERIFY( view->mFilter->filterType() == LogsFilter::All );  
     VERIFY_CHECKED_ACTION( view, logsShowFilterRecentMenuActionId )
-    QVERIFY( view->mDialpad->editor().text().isEmpty() );
+    QVERIFY( !view->mDialpad->editor().text().isEmpty() );
     QVERIFY( view->mListView->layoutName() == logsListLandscapeLayout );
     QVERIFY( view->mLayoutSectionName == logsViewDefaultSection );
     QVERIFY( !view->mResetted );
@@ -272,31 +272,59 @@
     // Call cannot be constructed in model
     QModelIndex filterIndex;
     mRecentCallsView->initiateCallback(filterIndex);
-    QVERIFY( LogsCall::lastCalledFuntion().isEmpty() );
+    QVERIFY( LogsCall::lastCalledFunction().isEmpty() );
 
     // Call can be constructed in model
     filterIndex = makeValidFilterIndex(*mRecentCallsView);
     mRecentCallsView->initiateCallback(filterIndex);
-    QVERIFY( LogsCall::lastCalledFuntion() == QString("initiateCallback") );
+    QVERIFY( LogsCall::lastCalledFunction() == QString("initiateCallback") );
 }
 
 void UT_LogsRecentCallsView::testCallKeyPressed()
-{    LogsRecentCallsView* view = mRepository->recentCallsView();
+{    
+    LogsRecentCallsView* view = mRepository->recentCallsView();
     
     // Not ready for calling
+    LogsCall::resetTestData();
     view->callKeyPressed();
+    QVERIFY( LogsCall::lastCalledFunction() != "initiateCallback" );
     
     // No any item where to call
+    LogsCall::resetTestData();
     view->activated( false, QVariant(LogsServices::ViewAll) );
     view->callKeyPressed();
+    QVERIFY( LogsCall::lastCalledFunction() != "initiateCallback" );
     
-    // Calling possible
+    // Calling possible to list item
+    LogsCall::resetTestData();
     mRepository->model()->mTextData.append("testdata");
     mRepository->model()->mTextData.append("testdata2");
     view->mListView->setCurrentIndex( 
         mRepository->model()->index( 1, 0 ), QItemSelectionModel::Select );
     view->callKeyPressed();
     QVERIFY( view->mListView->currentIndex().row() == 0 );
+    QVERIFY( LogsCall::lastCalledFunction() == "initiateCallback" );
+    
+    // Dialpad open but no input, call to first item in list
+    LogsCall::resetTestData();
+    view->mDialpad->mIsOpen = true;
+    view->callKeyPressed();
+    QVERIFY( LogsCall::lastCalledFunction() == "initiateCallback" );
+    
+    // Dialpad open and text in input, call to number in input field
+    LogsCall::resetTestData();
+    QString dial("12345");
+    view->mDialpad->editor().setText( dial );
+    view->callKeyPressed();
+    QVERIFY( LogsCall::isCallToNumberCalled() );
+    QVERIFY( LogsCall::lastCalledFunction() != "initiateCallback" );
+    
+    // Dialpad closed but contains text, call to first item in the list
+    LogsCall::resetTestData();
+    view->mDialpad->mIsOpen = false;
+    view->callKeyPressed();
+    QVERIFY( !LogsCall::isCallToNumberCalled() );
+    QVERIFY( LogsCall::lastCalledFunction() == "initiateCallback" );
 }
 
 void UT_LogsRecentCallsView::testShowCallDetails()
@@ -664,16 +692,28 @@
     QObject* obj = mRepository->findObject( logsRecentViewClearListMenuActionId );
     HbAction* action = qobject_cast<HbAction*>( obj );
     QVERIFY(action && action->isVisible());
+    HbAction* addToContactsAction = qobject_cast<HbAction*>( 
+            mRepository->findObject( logsCommonAddToContactsMenuActionId ) );
+    HbAction* contactsSearchAction = qobject_cast<HbAction*>( 
+                mRepository->findObject( logsRecentViewContactSearchMenuActionId ) );
+    QVERIFY(addToContactsAction && addToContactsAction->isVisible());
     delete view->mFilter;
     view->mFilter = 0;
     view->mFilter = new LogsFilter();
     view->updateMenu();
     QVERIFY(action && !action->isVisible());
+    QVERIFY(addToContactsAction && !addToContactsAction->isVisible());
+    QVERIFY(contactsSearchAction && !contactsSearchAction->isVisible());
     
-    //menu is in repository, non-empty model => "Clear list" is visible
+    //menu is in repository, non-empty model and dialpad open with content => 
+    // "Clear list", "Add to contacts", "Contact search on/off" visible
+    view->mDialpad->editor().setText("233141");
+    view->mDialpad->mIsOpen = true;
     makeValidFilterIndex(*view);
     view->updateMenu();
     QVERIFY(action && action->isVisible());
+    QVERIFY(addToContactsAction && addToContactsAction->isVisible());
+    QVERIFY(contactsSearchAction && contactsSearchAction->isVisible());
 }
 
 
@@ -696,16 +736,29 @@
     QVERIFY( !mRecentCallsView->mListView );
     mRecentCallsView->updateWidgetsSizeAndLayout();
     
+
+    //listView exists, layout and size updated, also menu is updated
     HbListView list;
-    //listView exists, layout and size updated
-    mRecentCallsView->mViewManager.mainWindow().setOrientation( Qt::Vertical );
-    mRecentCallsView->mDialpad->closeDialpad();
-    mRecentCallsView->mListView = &list;
-    mRecentCallsView->mListView->setLayoutName("dummy");
-    mRecentCallsView->mLayoutSectionName = "dummy";
-    mRecentCallsView->updateWidgetsSizeAndLayout();
-    QVERIFY( mRecentCallsView->mListView->layoutName() == logsListDefaultLayout );
-    QVERIFY( mRecentCallsView->mLayoutSectionName == logsViewDefaultSection );
+    LogsRecentCallsView* view = mRepository->recentCallsView();
+    view->mViewManager.mainWindow().setOrientation( Qt::Vertical );
+    view->mDialpad->closeDialpad();
+    view->mListView = &list;
+    view->mListView->setLayoutName("dummy");
+    view->mLayoutSectionName = "dummy";
+    view->updateWidgetsSizeAndLayout();
+    QVERIFY( view->mListView->layoutName() == logsListDefaultLayout );
+    QVERIFY( view->mLayoutSectionName == logsViewDefaultSection );
+    QVERIFY( view->mListView->layoutName() == logsListDefaultLayout );
+    QObject* obj = mRepository->findObject( logsCommonMessageMenuActionId );
+    HbAction* action = qobject_cast<HbAction*>( obj );
+    QVERIFY(action && !action->isVisible());
+       
+    // When dialpad is opened and has input, menu content is different
+    view->mDialpad->openDialpad();
+    QString hello("hello");
+    view->mDialpad->editor().setText( hello );
+    view->updateWidgetsSizeAndLayout();
+    QVERIFY(action && action->isVisible());
 }
 
 void UT_LogsRecentCallsView::testDialpadClosed()
@@ -719,31 +772,36 @@
     QString hello("hello");
     mRecentCallsView->mDialpad->editor().setText( hello );
     mRecentCallsView->dialpadClosed();
-    QVERIFY( mRecentCallsView->mDialpad->editor().text().isEmpty()  );
+    QVERIFY( !mRecentCallsView->mDialpad->editor().text().isEmpty()  );
     QVERIFY( mRecentCallsView->mLayoutSectionName == logsViewDefaultSection );
 }
 
 void UT_LogsRecentCallsView::testClearList()
 {
+    // No filter, nothing happens
+    HbStubHelper::reset();
+    QVERIFY( !HbStubHelper::dialogShown() );
+    mRecentCallsView->clearList();
+    QVERIFY( !HbStubHelper::dialogShown() );
 
-    //check that without filter list is not cleared
-    mRecentCallsView->mModel->mIsCleared = false;
-    HbMessageBox().setText(tr("Ok"));
-    mRecentCallsView->clearList();
-    QVERIFY( !mRecentCallsView->mModel->mIsCleared );
-
+    // Filter exists, confirmation dialog is shown
     mRecentCallsView->mFilter = new LogsFilter( LogsFilter::Missed );
-       
-    //simulate "Ok" button press of messagebox
-    HbMessageBox().setText(tr("Ok"));
     mRecentCallsView->clearList();
-    QVERIFY( mRecentCallsView->mModel->mIsCleared );
+    QVERIFY( HbStubHelper::dialogShown() );
+
+}
 
-    //simulate "Cancel" button press of messagebox
+void UT_LogsRecentCallsView::testClearListOkAnswer()
+{
+    // No filter ,list is not cleared
     mRecentCallsView->mModel->mIsCleared = false;
-    HbMessageBox().setText(tr("Cancel"));
-    mRecentCallsView->clearList();
+    mRecentCallsView->clearListOkAnswer();
     QVERIFY( !mRecentCallsView->mModel->mIsCleared );
+    
+    // Filter exists, list is cleared
+    mRecentCallsView->mFilter = new LogsFilter( LogsFilter::Missed );
+    mRecentCallsView->clearListOkAnswer();
+    QVERIFY( mRecentCallsView->mModel->mIsCleared );
 }
 
 void UT_LogsRecentCallsView::testIsExitAllowed()
@@ -771,3 +829,78 @@
     QVERIFY( spy.count() == 1 );
     QVERIFY( mRecentCallsView->isExitAllowed() );
 }
+
+void UT_LogsRecentCallsView::testContactSearch()
+{
+    int status = mRecentCallsView->mModel->predictiveSearchStatus();
+    QVERIFY( status == 1 );
+    LogsRecentCallsView* view = mRepository->recentCallsView();
+    view->mDialpad->mIsOpen = true;
+    view->mDialpad->editor().setText( "12344" );
+    view->updateMenu();
+    status = view->mModel->predictiveSearchStatus();
+    QVERIFY( status == 1 );
+    QObject* obj = mRepository->findObject( logsRecentViewContactSearchMenuActionId );
+    HbAction* action = qobject_cast<HbAction*>( obj );
+    QVERIFY(action && action->isVisible());
+    QVERIFY(action->text()== hbTrId("txt_dialer_ui_opt_contact_search_off"));     
+    
+    //set contact search off            
+    view->toggleContactSearch();
+    status = view->mModel->predictiveSearchStatus();
+    QVERIFY( status == 2 );
+    obj = mRepository->findObject( logsRecentViewContactSearchMenuActionId );
+    action = qobject_cast<HbAction*>( obj );
+    QVERIFY(action && action->isVisible());
+    QVERIFY(action->text()== hbTrId("txt_dialer_ui_opt_contact_search_on"));  
+    
+    //set contact search on
+    view->toggleContactSearch();
+    status = view->mModel->predictiveSearchStatus();
+    QVERIFY( status == 1 );
+    
+    //set contact search permanently off
+    view->mModel->mPredectiveSearchStatus = 0;
+    view->toggleContactSearch();
+    status = view->mModel->predictiveSearchStatus();
+    QVERIFY( status == 0 );
+    view->updateMenu();
+    obj = mRepository->findObject( logsRecentViewContactSearchMenuActionId );
+    action = qobject_cast<HbAction*>( obj );
+    QVERIFY(action && !action->isVisible());
+    
+    view->mModel->mPredectiveSearchStatus = 2;
+    //set contact search on
+    view->toggleContactSearch();
+    status = view->mModel->predictiveSearchStatus();
+    QVERIFY( status == 1 );
+    
+}
+
+void UT_LogsRecentCallsView::testDialpadOpened()
+{
+    mRepository->recentCallsView();
+    mRecentCallsView->activated( false, QVariant(LogsServices::ViewAll) );
+        
+    // If contact search is disabled, opening dialpad containing input
+    // does not cause going to matches view
+    mViewManager->reset();
+    mRecentCallsView->mDialpad->mIsOpen = true;
+    mRecentCallsView->mModel->setPredictiveSearch(false);
+    mRecentCallsView->mDialpad->editor().setText( QString("hello") );
+    mRecentCallsView->dialpadOpened();
+    QVERIFY( mViewManager->mViewId == LogsUnknownViewId );
+    
+    // If contact search is enabled, opening dialpad containing input
+    // causes going to matches view
+    mRecentCallsView->mModel->setPredictiveSearch(true);
+    mRecentCallsView->dialpadOpened();
+    QVERIFY( mViewManager->mViewId == LogsMatchesViewId );
+    
+    // Nothing in input field, doe not cause transition to matches view
+    // causes going to matches view
+    mViewManager->reset();
+    mRecentCallsView->mDialpad->editor().setText( "" );
+    mRecentCallsView->dialpadOpened();
+    QVERIFY( mViewManager->mViewId == LogsUnknownViewId );
+}