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 // ----------------------------------------------------------------------------- |