logsui/logsengine/tsrc/ut_logsengine/src/ut_logsmatchesmodel.cpp
changeset 15 76d2cf7a585e
parent 9 68f3171a5819
child 17 90fe74753f71
equal deleted inserted replaced
13:52d644758b05 15:76d2cf7a585e
    24 #include "logsmessage.h"
    24 #include "logsmessage.h"
    25 #include "logseventdata.h"
    25 #include "logseventdata.h"
    26 #include "qtcontacts_stubs_helper.h"
    26 #include "qtcontacts_stubs_helper.h"
    27 #include "logscntfinder.h"
    27 #include "logscntfinder.h"
    28 #include "logsdbconnector_stub_helper.h"
    28 #include "logsdbconnector_stub_helper.h"
       
    29 #include "hbstubs_helper.h"
    29 
    30 
    30 #include <QtTest/QtTest>
    31 #include <QtTest/QtTest>
    31 
    32 
    32 Q_DECLARE_METATYPE(LogsEvent *)
    33 Q_DECLARE_METATYPE(LogsEvent *)
    33 Q_DECLARE_METATYPE(LogsCall *)
    34 Q_DECLARE_METATYPE(LogsCall *)
    56 //
    57 //
    57 // -----------------------------------------------------------------------------
    58 // -----------------------------------------------------------------------------
    58 //
    59 //
    59 void UT_LogsMatchesModel::init()
    60 void UT_LogsMatchesModel::init()
    60 {
    61 {
       
    62     HbStubHelper::reset();
    61     mModel = new LogsModel();
    63     mModel = new LogsModel();
    62     LogsDbConnectorStubHelper::setPredictiveSearch(1);
    64     LogsDbConnectorStubHelper::setPredictiveSearch(1);
    63     mMatchesModel = mModel->logsMatchesModel();
    65     mMatchesModel = mModel->logsMatchesModel();
    64 }
    66 }
    65 
    67 
   154     
   156     
   155     LogsMatchesModelItemContainer* item = new LogsMatchesModelItemContainer(
   157     LogsMatchesModelItemContainer* item = new LogsMatchesModelItemContainer(
   156             *mModel, *mMatchesModel->mIconManager, 0); 
   158             *mModel, *mMatchesModel->mIconManager, 0); 
   157     LogsEvent event;
   159     LogsEvent event;
   158     event.setRemoteParty( "Testing" );
   160     event.setRemoteParty( "Testing" );
       
   161     event.setIndex(0);
   159     item->setEvent(event);
   162     item->setEvent(event);
   160     item->mFormattedCallerId = "formattedCallerId";
   163     item->mFormattedCallerId = "formattedCallerId";
   161     mMatchesModel->mMatches.append(item);
   164     mMatchesModel->mMatches.append(item);
   162     
   165     
   163     QtContactsStubsHelper::setContactId(contactId);
   166     QtContactsStubsHelper::setContactId(contactId);
   255     // One event added
   258     // One event added
   256     LogsMatchesModelItemContainer* item = new LogsMatchesModelItemContainer(
   259     LogsMatchesModelItemContainer* item = new LogsMatchesModelItemContainer(
   257             *mModel, *mMatchesModel->mIconManager, 0); 
   260             *mModel, *mMatchesModel->mIconManager, 0); 
   258     mMatchesModel->mMatches.append(item);
   261     mMatchesModel->mMatches.append(item);
   259     LogsEvent* event = new LogsEvent();
   262     LogsEvent* event = new LogsEvent();
       
   263     event->setIndex(0);
   260     mModel->mEvents.append(event);
   264     mModel->mEvents.append(event);
   261     mMatchesModel->eventsAdded(QModelIndex(), 0, 0);
   265     mMatchesModel->eventsAdded(QModelIndex(), 0, 0);
   262     QVERIFY( mMatchesModel->mSearchEvents.count() == 1 );
   266     QVERIFY( mMatchesModel->mSearchEvents.count() == 1 );
   263     QVERIFY( mMatchesModel->mMatches.count() == 0 ); // cleared because of new events
   267     QVERIFY( mMatchesModel->mMatches.count() == 0 ); // cleared because of new events
   264     QVERIFY( mMatchesModel->mPrevSearchPattern.isEmpty() ); // Must be emptied, otherwise requery would not occur
   268     QVERIFY( mMatchesModel->mPrevSearchPattern.isEmpty() ); // Must be emptied, otherwise requery would not occur
   266     // Two more sequnetial events added
   270     // Two more sequnetial events added
   267     item = new LogsMatchesModelItemContainer(
   271     item = new LogsMatchesModelItemContainer(
   268             *mModel, *mMatchesModel->mIconManager, 1); 
   272             *mModel, *mMatchesModel->mIconManager, 1); 
   269     mMatchesModel->mMatches.append(item);
   273     mMatchesModel->mMatches.append(item);
   270     LogsEvent* event2 = new LogsEvent();
   274     LogsEvent* event2 = new LogsEvent();
       
   275     event2->setIndex(1);
   271     LogsEvent* event3 = new LogsEvent();
   276     LogsEvent* event3 = new LogsEvent();
       
   277     event3->setIndex(2);
   272     mModel->mEvents.insert(0, event2);
   278     mModel->mEvents.insert(0, event2);
   273     mModel->mEvents.insert(0, event3);
   279     mModel->mEvents.insert(0, event3);
   274     mMatchesModel->eventsAdded(QModelIndex(), 0, 1);
   280     mMatchesModel->eventsAdded(QModelIndex(), 0, 1);
   275     QVERIFY( mMatchesModel->mSearchEvents.count() == 3 );  
   281     QVERIFY( mMatchesModel->mSearchEvents.count() == 3 );  
   276     QVERIFY( mMatchesModel->mMatches.count() == 0 ); // cleared because of new events
   282     QVERIFY( mMatchesModel->mMatches.count() == 0 ); // cleared because of new events
   292     mMatchesModel->eventsUpdated(mModel->index(0), mModel->index(0));
   298     mMatchesModel->eventsUpdated(mModel->index(0), mModel->index(0));
   293     QVERIFY( mMatchesModel->mMatches.count() == 1 ); // not cleared because nothing was updated
   299     QVERIFY( mMatchesModel->mMatches.count() == 1 ); // not cleared because nothing was updated
   294     
   300     
   295     // Search event to update
   301     // Search event to update
   296     LogsEvent* event = new LogsEvent();
   302     LogsEvent* event = new LogsEvent();
       
   303     event->setIndex(0);
   297     mModel->mEvents.append(event);
   304     mModel->mEvents.append(event);
   298     mMatchesModel->eventsAdded(QModelIndex(), 0, 0);
   305     mMatchesModel->eventsAdded(QModelIndex(), 0, 0);
   299     mMatchesModel->eventsUpdated(mModel->index(0), mModel->index(0));
   306     mMatchesModel->eventsUpdated(mModel->index(0), mModel->index(0));
   300     QVERIFY( mMatchesModel->mSearchEvents.count() == 1 );  
   307     QVERIFY( mMatchesModel->mSearchEvents.count() == 1 );  
   301     QVERIFY( mMatchesModel->mMatches.count() == 0 ); // cleared because of updated events
   308     QVERIFY( mMatchesModel->mMatches.count() == 0 ); // cleared because of updated events
   317     mMatchesModel->eventsRemoved(QModelIndex(), 0, 0);
   324     mMatchesModel->eventsRemoved(QModelIndex(), 0, 0);
   318     QVERIFY( mMatchesModel->mMatches.count() == 1 ); // not cleared because nothing was removed
   325     QVERIFY( mMatchesModel->mMatches.count() == 1 ); // not cleared because nothing was removed
   319     
   326     
   320     // Existing search event removed
   327     // Existing search event removed
   321     LogsEvent* event = new LogsEvent();
   328     LogsEvent* event = new LogsEvent();
       
   329     event->setIndex(0);
   322     mModel->mEvents.append(event);
   330     mModel->mEvents.append(event);
   323     mMatchesModel->eventsAdded(QModelIndex(), 0, 0);
   331     mMatchesModel->eventsAdded(QModelIndex(), 0, 0);
   324     mMatchesModel->eventsRemoved(QModelIndex(), 0, 0);
   332     mMatchesModel->eventsRemoved(QModelIndex(), 0, 0);
   325     QVERIFY( mMatchesModel->mSearchEvents.count() == 0 ); // cleared because of removed events
   333     QVERIFY( mMatchesModel->mSearchEvents.count() == 0 ); // cleared because of removed events
   326     QVERIFY( mMatchesModel->mMatches.count() == 0 ); // cleared because of removed events
   334     QVERIFY( mMatchesModel->mMatches.count() == 0 ); // cleared because of removed events
   343     QString event2Name("event2");
   351     QString event2Name("event2");
   344     event2->setRemoteParty(event2Name);
   352     event2->setRemoteParty(event2Name);
   345     LogsEvent* event3 = new LogsEvent();
   353     LogsEvent* event3 = new LogsEvent();
   346     QString event3Name("event3");
   354     QString event3Name("event3");
   347     event3->setRemoteParty(event3Name);
   355     event3->setRemoteParty(event3Name);
       
   356     event->setIndex(0);
       
   357     event2->setIndex(1);
       
   358     event3->setIndex(2);
   348     mModel->mEvents.append(event);
   359     mModel->mEvents.append(event);
   349     mModel->mEvents.append(event2);
   360     mModel->mEvents.append(event2);
   350     mModel->mEvents.append(event3);
   361     mModel->mEvents.append(event3);
   351     mMatchesModel->eventsAdded(QModelIndex(), 0, 2);
   362     mMatchesModel->eventsAdded(QModelIndex(), 0, 2);
   352     QCOMPARE( mMatchesModel->mSearchEvents.count(), 3 );
   363     QCOMPARE( mMatchesModel->mSearchEvents.count(), 3 );
   358     mModel->mEvents.clear();
   369     mModel->mEvents.clear();
   359 
   370 
   360     LogsEvent* event4 = new LogsEvent();
   371     LogsEvent* event4 = new LogsEvent();
   361     QString event4Name("event4");
   372     QString event4Name("event4");
   362     event4->setRemoteParty(event4Name);
   373     event4->setRemoteParty(event4Name);
       
   374     
       
   375     event4->setIndex(0);
       
   376     event->setIndex(1);
       
   377     event3->setIndex(2);
   363     mModel->mEvents.append(event4);
   378     mModel->mEvents.append(event4);
   364     
       
   365     mModel->mEvents.append(event);
   379     mModel->mEvents.append(event);
   366     mModel->mEvents.append(event3);
   380     mModel->mEvents.append(event3);
   367     
   381     
   368     QSignalSpy spy(mMatchesModel, SIGNAL(modelReset()));
   382     QSignalSpy spy(mMatchesModel, SIGNAL(modelReset()));
   369     mMatchesModel->eventsResetted();
   383     mMatchesModel->eventsResetted();
   397     QVERIFY( spy.count() == 1 );
   411     QVERIFY( spy.count() == 1 );
   398     QVERIFY( mMatchesModel->mResultCount == 1 );
   412     QVERIFY( mMatchesModel->mResultCount == 1 );
   399     
   413     
   400     // Query ready when matching search events
   414     // Query ready when matching search events
   401     LogsEvent* event = new LogsEvent();
   415     LogsEvent* event = new LogsEvent();
       
   416     event->setIndex(0);
   402     mModel->mEvents.append(event);
   417     mModel->mEvents.append(event);
   403     mMatchesModel->eventsAdded(QModelIndex(), 0, 0); // Causes immediate reset
   418     mMatchesModel->eventsAdded(QModelIndex(), 0, 0); // Causes immediate reset
   404     mMatchesModel->logsMatches( "4" );
   419     mMatchesModel->logsMatches( "4" );
   405     mMatchesModel->doSearchQuery(); // simulate async completion
   420     mMatchesModel->doSearchQuery(); // simulate async completion
   406     mMatchesModel->mLogsCntFinder->mResults.append(
   421     mMatchesModel->mLogsCntFinder->mResults.append(
   491     event.setNumber( "1234" );
   506     event.setNumber( "1234" );
   492     item.setEvent(event);
   507     item.setEvent(event);
   493     QVariant var = mMatchesModel->createCall(item);
   508     QVariant var = mMatchesModel->createCall(item);
   494     LogsCall *call = qVariantValue<LogsCall *>( var );
   509     LogsCall *call = qVariantValue<LogsCall *>( var );
   495     QVERIFY( call );
   510     QVERIFY( call );
       
   511     QVERIFY( call->defaultCallType() != LogsCall::TypeLogsCallNotAvailable );
   496     delete call;
   512     delete call;
   497     
   513     
   498     // With contact, calling not supported
   514     // With contact, calling not supported
   499     LogsMatchesModelItemContainer item2(*mModel, *mMatchesModel->mIconManager, 1);  
   515     LogsMatchesModelItemContainer item2(*mModel, *mMatchesModel->mIconManager, 1);  
   500     var = mMatchesModel->createCall(item2);
   516     var = mMatchesModel->createCall(item2);
   501     call = qVariantValue<LogsCall *>( var );
   517     call = qVariantValue<LogsCall *>( var );
   502     QVERIFY( !call );
   518     QVERIFY( call );
       
   519     QVERIFY( call->defaultCallType() == LogsCall::TypeLogsCallNotAvailable );
       
   520     delete call;
   503     
   521     
   504     // With contact, calling supported
   522     // With contact, calling supported
   505     LogsMatchesModelItemContainer item3(*mModel, *mMatchesModel->mIconManager, 2);  
   523     LogsMatchesModelItemContainer item3(*mModel, *mMatchesModel->mIconManager, 2);  
   506     item3.setContact(2);
   524     item3.setContact(2);
   507     item3.mContactNumber = "12345";
   525     item3.mContactNumber = "12345";
   508     var = mMatchesModel->createCall(item3);
   526     var = mMatchesModel->createCall(item3);
   509     call = qVariantValue<LogsCall *>( var );
   527     call = qVariantValue<LogsCall *>( var );
   510     QVERIFY( call );
   528     QVERIFY( call );
       
   529     QVERIFY( call->defaultCallType() != LogsCall::TypeLogsCallNotAvailable );
   511     delete call;
   530     delete call;
   512     
   531     
   513 }
   532 }
   514 
   533 
   515 // -----------------------------------------------------------------------------
   534 // -----------------------------------------------------------------------------
   592     LogsEvent event2;
   611     LogsEvent event2;
   593     event2.setNumber("55556666");
   612     event2.setNumber("55556666");
   594     LogsCntEntry entry2(0);
   613     LogsCntEntry entry2(0);
   595     mMatchesModel->updateSearchEntry(entry2, event2);
   614     mMatchesModel->updateSearchEntry(entry2, event2);
   596     QVERIFY( entry2.firstName().at(0).text() == "" );
   615     QVERIFY( entry2.firstName().at(0).text() == "" );
   597     QVERIFY( entry2.phoneNumber().text() == "55556666" );
   616     QCOMPARE( entry2.phoneNumber().text(), QString("55556666") );
   598 
   617 
   599     // Only number starting with '+' exists
   618     // Only number starting with '+' exists
   600     LogsEvent event3;
   619     LogsEvent event3;
   601     event3.setNumber("+77776666");
   620     event3.setNumber("+77776666");
   602     LogsCntEntry entry3(0);
   621     LogsCntEntry entry3(0);
   645     entry.setPhoneNumber(" number");
   664     entry.setPhoneNumber(" number");
   646     QString callerId = item.getFormattedCallerId(entry);
   665     QString callerId = item.getFormattedCallerId(entry);
   647     QVERIFY( callerId == "long firstname" );
   666     QVERIFY( callerId == "long firstname" );
   648     
   667     
   649     // Firstname is missing, phone number is used
   668     // Firstname is missing, phone number is used
       
   669     HbStubHelper::stringUtilDigitConversion(true);
   650     entry.setFirstName("");
   670     entry.setFirstName("");
   651     callerId = item.getFormattedCallerId(entry);
   671     callerId = item.getFormattedCallerId(entry);
   652     QVERIFY( callerId == "number" );
   672     QCOMPARE( callerId, QString("conv number") );
   653 }
   673 }
   654 
   674 
   655 // -----------------------------------------------------------------------------
   675 // -----------------------------------------------------------------------------
   656 //
   676 //
   657 // -----------------------------------------------------------------------------
   677 // -----------------------------------------------------------------------------