137 void TestSymbianEngine::saveContact() |
137 void TestSymbianEngine::saveContact() |
138 { |
138 { |
139 QContactManager::Error err; |
139 QContactManager::Error err; |
140 QList<QContactSortOrder> sortOrders; |
140 QList<QContactSortOrder> sortOrders; |
141 QContactId empty; |
141 QContactId empty; |
142 |
142 QContactFilter defaultFilter = QContactFilter(); |
143 int init_count = m_engine->contactIds(sortOrders, err).count(); |
143 |
|
144 int init_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
144 QVERIFY(err == QContactManager::NoError); |
145 QVERIFY(err == QContactManager::NoError); |
145 |
146 |
146 // Save a "NULL" contact |
147 // Save a "NULL" contact |
147 QVERIFY(!m_engine->saveContact(NULL, err)); |
148 QVERIFY(!m_engine->saveContact(NULL, &err)); |
148 QVERIFY(err == QContactManager::BadArgumentError); |
149 QVERIFY(err == QContactManager::BadArgumentError); |
149 int current_count = m_engine->contactIds(sortOrders, err).count(); |
150 int current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
150 QVERIFY(err == QContactManager::NoError); |
151 QVERIFY(err == QContactManager::NoError); |
151 QVERIFY(init_count == current_count); |
152 QVERIFY(init_count == current_count); |
152 |
153 |
153 // Save a contact that is not in database |
154 // Save a contact that is not in database |
154 QContact invaId; |
155 QContact invaId; |
155 QVERIFY(m_engine->saveContact(&invaId, err)); // Add to db |
156 QVERIFY(m_engine->saveContact(&invaId, &err)); // Add to db |
156 QVERIFY(err == QContactManager::NoError); |
157 QVERIFY(err == QContactManager::NoError); |
157 QContactId cId = invaId.id(); |
158 QContactId cId = invaId.id(); |
158 m_engine->removeContact(invaId.localId(), err); // Ensure not in db |
159 m_engine->removeContact(invaId.localId(), &err); // Ensure not in db |
159 QVERIFY(err == QContactManager::NoError); |
160 QVERIFY(err == QContactManager::NoError); |
160 invaId.setId(cId); |
161 invaId.setId(cId); |
161 QVERIFY(!m_engine->saveContact(&invaId, err)); // Update non existent contact |
162 QVERIFY(!m_engine->saveContact(&invaId, &err)); // Update non existent contact |
162 QVERIFY(err == QContactManager::DoesNotExistError); |
163 QVERIFY(err == QContactManager::DoesNotExistError); |
163 current_count = m_engine->contactIds(sortOrders, err).count(); |
164 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
164 QVERIFY(err == QContactManager::NoError); |
165 QVERIFY(err == QContactManager::NoError); |
165 QVERIFY(init_count == current_count); |
166 QVERIFY(init_count == current_count); |
166 |
167 |
167 QContact alice; |
168 QContact alice; |
168 alice.setType("Jargon"); |
169 alice.setType("Jargon"); |
169 |
170 |
170 // Save a "non contact(Jargon) type" contact |
171 // Save a "non contact(Jargon) type" contact |
171 QVERIFY(!m_engine->saveContact(&alice, err)); |
172 QVERIFY(!m_engine->saveContact(&alice, &err)); |
172 QVERIFY(err == QContactManager::InvalidDetailError); |
173 QVERIFY(err == QContactManager::InvalidDetailError); |
173 QVERIFY(alice.id() == empty); |
174 QVERIFY(alice.id() == empty); |
174 QVERIFY(alice.localId() == 0); |
175 QVERIFY(alice.localId() == 0); |
175 current_count = m_engine->contactIds(sortOrders, err).count(); |
176 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
176 QVERIFY(err == QContactManager::NoError); |
177 QVERIFY(err == QContactManager::NoError); |
177 QVERIFY(init_count == current_count); |
178 QVERIFY(init_count == current_count); |
178 |
179 |
179 // Save a valid contact |
180 // Save a valid contact |
180 alice.setType(QContactType::TypeContact); |
181 alice.setType(QContactType::TypeContact); |
181 QVERIFY(m_engine->saveContact(&alice, err)); |
182 QVERIFY(m_engine->saveContact(&alice, &err)); |
182 QVERIFY(err == QContactManager::NoError); |
183 QVERIFY(err == QContactManager::NoError); |
183 QVERIFY(alice.id() != empty); |
184 QVERIFY(alice.id() != empty); |
184 QVERIFY(alice.localId() != 0); |
185 QVERIFY(alice.localId() != 0); |
185 QString uri = QString(QLatin1String(CNT_SYMBIAN_MANAGER_NAME)); |
186 QString uri = QString(QLatin1String(CNT_SYMBIAN_MANAGER_NAME)); |
186 QVERIFY(alice.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
187 QVERIFY(alice.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
187 current_count = m_engine->contactIds(sortOrders, err).count(); |
188 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
188 QVERIFY(err == QContactManager::NoError); |
189 QVERIFY(err == QContactManager::NoError); |
189 QVERIFY(init_count + 1 == current_count); |
190 QVERIFY(init_count + 1 == current_count); |
190 |
191 |
191 // Save a valid contact |
192 // Save a valid contact |
192 QContact g; |
193 QContact g; |
193 g.setType(QContactType::TypeGroup); |
194 g.setType(QContactType::TypeGroup); |
194 QContactName en; |
195 QContactName en; |
195 en.setCustomLabel("ccc"); |
196 en.setCustomLabel("ccc"); |
196 QVERIFY(g.saveDetail(&en)); |
197 QVERIFY(g.saveDetail(&en)); |
197 QVERIFY(m_engine->saveContact(&g, err)); |
198 QVERIFY(m_engine->saveContact(&g, &err)); |
198 QVERIFY(err == QContactManager::NoError); |
199 QVERIFY(err == QContactManager::NoError); |
199 QVERIFY(g.id() != empty); |
200 QVERIFY(g.id() != empty); |
200 QVERIFY(g.localId() != 0); |
201 QVERIFY(g.localId() != 0); |
201 QVERIFY(g.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
202 QVERIFY(g.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
202 } |
203 } |
291 } |
293 } |
292 |
294 |
293 void TestSymbianEngine::saveContacts() |
295 void TestSymbianEngine::saveContacts() |
294 { |
296 { |
295 QContactManager::Error err; |
297 QContactManager::Error err; |
|
298 QContactFilter defaultFilter = QContactFilter(); |
296 QList<QContactSortOrder> sortOrders; |
299 QList<QContactSortOrder> sortOrders; |
297 QList<QContact> contacts; |
300 QList<QContact> contacts; |
298 QContactId empty; |
301 QContactId empty; |
299 int count = 5; |
302 int count = 5; |
300 |
303 |
301 int init_count = m_engine->contactIds(sortOrders, err).count(); |
304 int init_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
302 QVERIFY(err == QContactManager::NoError); |
305 QVERIFY(err == QContactManager::NoError); |
303 |
306 |
304 // NULL |
307 // NULL |
305 QMap<int, QContactManager::Error> errorMap; |
308 QMap<int, QContactManager::Error> errorMap; |
306 QVERIFY(!m_engine->saveContacts(NULL, &errorMap, err)); |
309 QVERIFY(!m_engine->saveContacts(NULL, &errorMap, &err)); |
307 QVERIFY(errorMap.count() == 0); |
310 QVERIFY(errorMap.count() == 0); |
308 QVERIFY(err == QContactManager::BadArgumentError); |
311 QVERIFY(err == QContactManager::BadArgumentError); |
309 int current_count = m_engine->contactIds(sortOrders, err).count(); |
312 int current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
310 QVERIFY(err == QContactManager::NoError); |
313 QVERIFY(err == QContactManager::NoError); |
311 QVERIFY(init_count == current_count); |
314 QVERIFY(init_count == current_count); |
312 |
315 |
313 // Save a "non contact(Jargon) type" contacts |
316 // Save a "non contact(Jargon) type" contacts |
314 for(int i=0; i<count; i++) { |
317 for(int i=0; i<count; i++) { |
315 QContact alice; |
318 QContact alice; |
316 alice.setType("Jargon"); |
319 alice.setType("Jargon"); |
317 contacts.append(alice); |
320 contacts.append(alice); |
318 } |
321 } |
319 QVERIFY(!m_engine->saveContacts(&contacts, &errorMap, err)); |
322 QVERIFY(!m_engine->saveContacts(&contacts, &errorMap, &err)); |
320 QVERIFY(err == QContactManager::InvalidDetailError); |
323 QVERIFY(err == QContactManager::InvalidDetailError); |
321 foreach(QContactManager::Error err, errorMap) { |
324 foreach(QContactManager::Error err, errorMap) { |
322 QVERIFY(err == QContactManager::InvalidDetailError); |
325 QVERIFY(err == QContactManager::InvalidDetailError); |
323 } |
326 } |
324 foreach(QContact c, contacts) { |
327 foreach(const QContact& c, contacts) { |
325 QVERIFY(c.id() == empty); |
328 QVERIFY(c.id() == empty); |
326 QVERIFY(c.localId() == 0); |
329 QVERIFY(c.localId() == 0); |
327 } |
330 } |
328 current_count = m_engine->contactIds(sortOrders, err).count(); |
331 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
329 QVERIFY(err == QContactManager::NoError); |
332 QVERIFY(err == QContactManager::NoError); |
330 QVERIFY(init_count == current_count); |
333 QVERIFY(init_count == current_count); |
331 contacts.clear(); |
334 contacts.clear(); |
332 |
335 |
333 // Save valid contacts |
336 // Save valid contacts |
334 for(int i=0; i<count; i++) { |
337 for(int i=0; i<count; i++) { |
335 QContact alice; |
338 QContact alice; |
336 alice.setType(QContactType::TypeContact); |
339 alice.setType(QContactType::TypeContact); |
337 contacts.append(alice); |
340 contacts.append(alice); |
338 } |
341 } |
339 QVERIFY(m_engine->saveContacts(&contacts, &errorMap, err)); |
342 QVERIFY(m_engine->saveContacts(&contacts, &errorMap, &err)); |
340 QVERIFY(err == QContactManager::NoError); |
343 QVERIFY(err == QContactManager::NoError); |
341 foreach(QContactManager::Error err, errorMap) { |
344 foreach(QContactManager::Error err, errorMap) { |
342 QVERIFY(err == QContactManager::NoError); |
345 QVERIFY(err == QContactManager::NoError); |
343 } |
346 } |
344 QString uri = QString(QLatin1String(CNT_SYMBIAN_MANAGER_NAME)); |
347 QString uri = QString(QLatin1String(CNT_SYMBIAN_MANAGER_NAME)); |
345 foreach(QContact c, contacts) { |
348 foreach(const QContact& c, contacts) { |
346 QVERIFY(c.id() != empty); |
349 QVERIFY(c.id() != empty); |
347 QVERIFY(c.localId() != 0); |
350 QVERIFY(c.localId() != 0); |
348 QVERIFY(c.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
351 QVERIFY(c.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
349 } |
352 } |
350 current_count = m_engine->contactIds(sortOrders, err).count(); |
353 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
351 QVERIFY(err == QContactManager::NoError); |
354 QVERIFY(err == QContactManager::NoError); |
352 QVERIFY(init_count + count == current_count); |
355 QVERIFY(init_count + count == current_count); |
353 contacts.clear(); |
356 contacts.clear(); |
354 |
357 |
355 // Save with one invalid contact in list |
358 // Save with one invalid contact in list |
356 init_count = m_engine->contactIds(sortOrders, err).count(); |
359 init_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
357 for(int i=0; i<count; i++) { |
360 for(int i=0; i<count; i++) { |
358 QContact alice; |
361 QContact alice; |
359 alice.setType(QContactType::TypeContact); |
362 alice.setType(QContactType::TypeContact); |
360 contacts.append(alice); |
363 contacts.append(alice); |
361 } |
364 } |
362 QContact invalid; |
365 QContact invalid; |
363 invalid.setType("Jasdfasd"); |
366 invalid.setType("Jasdfasd"); |
364 contacts.insert(3, invalid); |
367 contacts.insert(3, invalid); |
365 |
368 |
366 QVERIFY(!m_engine->saveContacts(&contacts, &errorMap, err)); |
369 QVERIFY(!m_engine->saveContacts(&contacts, &errorMap, &err)); |
367 QVERIFY(err == QContactManager::InvalidDetailError); |
370 QVERIFY(err == QContactManager::InvalidDetailError); |
368 foreach(QContactManager::Error err, errorMap) { |
371 foreach(QContactManager::Error err, errorMap) { |
369 QVERIFY(err == QContactManager::InvalidDetailError); |
372 QVERIFY(err == QContactManager::InvalidDetailError); |
370 } |
373 } |
371 |
374 |
378 QVERIFY(c.id() != empty); |
381 QVERIFY(c.id() != empty); |
379 QVERIFY(c.localId() != 0); |
382 QVERIFY(c.localId() != 0); |
380 QVERIFY(c.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
383 QVERIFY(c.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
381 } |
384 } |
382 } |
385 } |
383 current_count = m_engine->contactIds(sortOrders, err).count(); |
386 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
384 QVERIFY(err == QContactManager::NoError); |
387 QVERIFY(err == QContactManager::NoError); |
385 QVERIFY(init_count + count == current_count); |
388 QVERIFY(init_count + count == current_count); |
386 contacts.clear(); |
389 contacts.clear(); |
387 } |
390 } |
388 |
391 |
389 void TestSymbianEngine::retrieveContact() |
392 void TestSymbianEngine::retrieveContact() |
390 { |
393 { |
391 QContactManager::Error err; |
394 QContactManager::Error err; |
|
395 QContactFetchHint hint = QContactFetchHint(); |
392 |
396 |
393 QContact alice; |
397 QContact alice; |
394 alice.setType(QContactType::TypeContact); |
398 alice.setType(QContactType::TypeContact); |
395 QVERIFY(m_engine->saveContact(&alice, err)); |
399 QVERIFY(m_engine->saveContact(&alice, &err)); |
396 QVERIFY(err == QContactManager::NoError); |
400 QVERIFY(err == QContactManager::NoError); |
397 |
401 |
398 // Retrieve "non contact" |
402 // Retrieve "non contact" |
399 QContact c = m_engine->contact(0, QStringList(), err); |
403 QContact c = m_engine->contact(0, hint, &err); |
400 QVERIFY(&c != NULL); |
404 QVERIFY(&c != NULL); |
401 QVERIFY(c.localId() == 0); |
405 QVERIFY(c.localId() == 0); |
402 QVERIFY(err == QContactManager::DoesNotExistError); |
406 QVERIFY(err == QContactManager::DoesNotExistError); |
403 |
407 |
404 // Retrieve valid existing contact |
408 // Retrieve valid existing contact |
405 QContactLocalId aid = alice.localId(); |
409 QContactLocalId aid = alice.localId(); |
406 c = m_engine->contact(aid, QStringList(), err); |
410 c = m_engine->contact(aid, hint, &err); |
407 QVERIFY(&c != NULL); |
411 QVERIFY(&c != NULL); |
408 QVERIFY(c.localId() == aid); |
412 QVERIFY(c.localId() == aid); |
409 QVERIFY(err == QContactManager::NoError); |
413 QVERIFY(err == QContactManager::NoError); |
410 } |
414 } |
411 |
415 |
412 void TestSymbianEngine::retrieveContacts() |
416 void TestSymbianEngine::retrieveContacts() |
413 { |
417 { |
414 QContactManager::Error err; |
418 QContactManager::Error err; |
415 QContactFilter f; |
419 QContactFilter f; |
|
420 QContactFilter defaultFilter = QContactFilter(); |
|
421 QContactFetchHint hint = QContactFetchHint(); |
416 QList<QContactSortOrder> s; |
422 QList<QContactSortOrder> s; |
417 QList<QContactLocalId> cnt_ids; |
423 QList<QContactLocalId> cnt_ids; |
418 |
424 |
419 QContact c; |
425 QContact c; |
420 c.setType(QContactType::TypeContact); |
426 c.setType(QContactType::TypeContact); |
425 QContactPhoneNumber number; |
431 QContactPhoneNumber number; |
426 number.setContexts("Home"); |
432 number.setContexts("Home"); |
427 number.setSubTypes("Mobile"); |
433 number.setSubTypes("Mobile"); |
428 number.setNumber("12345678"); |
434 number.setNumber("12345678"); |
429 QVERIFY(c.saveDetail(&number)); |
435 QVERIFY(c.saveDetail(&number)); |
430 QVERIFY(m_engine->saveContact(&c, err)); |
436 QVERIFY(m_engine->saveContact(&c, &err)); |
431 QVERIFY(err == QContactManager::NoError); |
437 QVERIFY(err == QContactManager::NoError); |
432 |
438 |
433 QContact d; |
439 QContact d; |
434 d.setType(QContactType::TypeContact); |
440 d.setType(QContactType::TypeContact); |
435 QContactName dn; |
441 QContactName dn; |
436 dn.setFirstName("bbb"); |
442 dn.setFirstName("bbb"); |
437 QVERIFY(d.saveDetail(&dn)); |
443 QVERIFY(d.saveDetail(&dn)); |
438 QVERIFY(m_engine->saveContact(&d, err)); |
444 QVERIFY(m_engine->saveContact(&d, &err)); |
439 QVERIFY(err == QContactManager::NoError); |
445 QVERIFY(err == QContactManager::NoError); |
440 |
446 |
441 QContact e; |
447 QContact e; |
442 e.setType(QContactType::TypeGroup); |
448 e.setType(QContactType::TypeGroup); |
443 QContactName en; |
449 QContactName en; |
444 en.setCustomLabel("ccc"); |
450 en.setCustomLabel("ccc"); |
445 QVERIFY(e.saveDetail(&en)); |
451 QVERIFY(e.saveDetail(&en)); |
446 QVERIFY(m_engine->saveContact(&e, err)); |
452 QVERIFY(m_engine->saveContact(&e, &err)); |
447 QVERIFY(err == QContactManager::NoError); |
453 QVERIFY(err == QContactManager::NoError); |
448 |
454 |
449 // Retrieve all contacts |
455 // Retrieve all contacts |
450 cnt_ids = m_engine->contactIds(f, s, err); |
456 cnt_ids = m_engine->contactIds(f, s, &err); |
451 QVERIFY(err == QContactManager::NoError); |
457 QVERIFY(err == QContactManager::NoError); |
|
458 QVERIFY(cnt_ids.count() > 0); |
452 |
459 |
453 QContactDetailFilter mobileFilter; |
460 QContactDetailFilter mobileFilter; |
454 mobileFilter.setDetailDefinitionName(QContactPhoneNumber::DefinitionName, QContactPhoneNumber::FieldSubTypes); |
461 mobileFilter.setDetailDefinitionName(QContactPhoneNumber::DefinitionName, QContactPhoneNumber::FieldSubTypes); |
455 mobileFilter.setValue(QLatin1String(QContactPhoneNumber::SubTypeMobile)); |
462 mobileFilter.setValue(QLatin1String(QContactPhoneNumber::SubTypeMobile)); |
456 |
463 |
457 // Retrieve contacts with mobile number |
464 // Retrieve contacts with mobile number |
458 cnt_ids = m_engine->contactIds(mobileFilter, s, err); |
465 cnt_ids = m_engine->contactIds(mobileFilter, s, &err); |
459 QVERIFY(err == QContactManager::NoError); |
466 QVERIFY(err == QContactManager::NoError); |
|
467 QVERIFY(cnt_ids.count() > 0); |
|
468 |
|
469 // Slow filter |
|
470 QList<QContactLocalId> fast_ids = m_engine->contactIds(mobileFilter, s, &err); |
|
471 QList<QContactLocalId> all_ids = m_engine->contactIds(f, s, &err); |
|
472 QList<QContactLocalId> slow_ids = m_engine->slowFilter(mobileFilter, all_ids, &err); |
|
473 QVERIFY(err == QContactManager::NoError); |
|
474 QVERIFY(slow_ids.count() == fast_ids.count()); |
460 |
475 |
461 QContactDetailFilter invalidFilter; |
476 QContactDetailFilter invalidFilter; |
462 mobileFilter.setDetailDefinitionName("asfdasdf", "asdfasdf"); |
477 mobileFilter.setDetailDefinitionName("asfdasdf", "asdfasdf"); |
463 |
478 |
464 // Retrieve contacts with invalid filter |
479 // Retrieve contacts with invalid filter |
465 cnt_ids = m_engine->contactIds(invalidFilter, s, err); |
480 cnt_ids = m_engine->contactIds(invalidFilter, s, &err); |
466 QVERIFY(err == QContactManager::NotSupportedError); |
481 QVERIFY(err == QContactManager::NotSupportedError); |
467 |
482 |
468 // Retrieve sorted contacts |
483 // Retrieve sorted contacts |
469 QContactSortOrder sortOrder; |
484 QContactSortOrder sortOrder; |
470 QList<QContactSortOrder> s1; |
485 QList<QContactSortOrder> s1; |
471 sortOrder.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldFirst); |
486 sortOrder.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldFirstName); |
472 sortOrder.setBlankPolicy(QContactSortOrder::BlanksLast); |
487 sortOrder.setBlankPolicy(QContactSortOrder::BlanksLast); |
473 sortOrder.setDirection(Qt::AscendingOrder); |
488 sortOrder.setDirection(Qt::AscendingOrder); |
474 sortOrder.setCaseSensitivity(Qt::CaseInsensitive); |
489 sortOrder.setCaseSensitivity(Qt::CaseInsensitive); |
475 s1.append(sortOrder); |
490 s1.append(sortOrder); |
476 |
491 |
477 cnt_ids = m_engine->contactIds(s1, err); |
492 cnt_ids = m_engine->contactIds(defaultFilter, s1, &err); |
478 QVERIFY(err == QContactManager::NoError); |
493 QVERIFY(err == QContactManager::NoError); |
479 |
494 |
480 // Retrieve with invalid sort order |
495 // Retrieve with invalid sort order |
481 QContactSortOrder sortOrder1; |
496 QContactSortOrder sortOrder1; |
482 QList<QContactSortOrder> s2; |
497 QList<QContactSortOrder> s2; |
483 sortOrder1.setDetailDefinitionName("asdfasdf", "asdfasd"); |
498 sortOrder1.setDetailDefinitionName("asdfasdf", "asdfasd"); |
484 |
499 |
485 cnt_ids = m_engine->contactIds(s2, err); |
500 cnt_ids = m_engine->contactIds(defaultFilter, s2, &err); |
|
501 QVERIFY(err == QContactManager::NoError); |
|
502 |
|
503 // Retrieve full contacts (with all details) |
|
504 QList<QContact> contactList; |
|
505 QList<QContactSortOrder> sortOrders; |
|
506 QStringList definitionRestrictions; |
|
507 contactList = m_engine->contacts(defaultFilter, sortOrders, hint, &err); |
|
508 QVERIFY(err == QContactManager::NoError); |
|
509 QContactFilter filter; |
|
510 contactList = m_engine->contacts(filter, sortOrders, hint, &err); |
486 QVERIFY(err == QContactManager::NoError); |
511 QVERIFY(err == QContactManager::NoError); |
487 } |
512 } |
488 |
513 |
489 void TestSymbianEngine::updateContact() |
514 void TestSymbianEngine::updateContact() |
490 { |
515 { |
491 QContactManager::Error err; |
516 QContactManager::Error err; |
|
517 QContactFetchHint hint = QContactFetchHint(); |
492 QContact c; |
518 QContact c; |
493 |
519 |
494 QVERIFY(m_engine->saveContact(&c, err)); |
520 QVERIFY(m_engine->saveContact(&c, &err)); |
495 QVERIFY(err == QContactManager::NoError); |
521 QVERIFY(err == QContactManager::NoError); |
496 |
522 |
497 int details_before = c.details().count(); |
523 int details_before = c.details().count(); |
498 |
524 |
499 QContactName aliceName; |
525 QContactName aliceName; |
547 number.setSubTypes("Mobile"); |
573 number.setSubTypes("Mobile"); |
548 number.setNumber("12345678"); |
574 number.setNumber("12345678"); |
549 c.saveDetail(&number); |
575 c.saveDetail(&number); |
550 |
576 |
551 //verify that the same contact was updated |
577 //verify that the same contact was updated |
552 QVERIFY(m_engine->saveContact(&c, err)); |
578 QVERIFY(m_engine->saveContact(&c, &err)); |
553 QContactLocalId id = c.localId(); |
579 QContactLocalId id = c.localId(); |
554 QVERIFY(err == QContactManager::NoError); |
580 QVERIFY(err == QContactManager::NoError); |
555 QVERIFY(initialId == id); |
581 QVERIFY(initialId == id); |
556 } |
582 } |
557 |
583 |
558 void TestSymbianEngine::removeContact() |
584 void TestSymbianEngine::removeContact() |
559 { |
585 { |
560 QContactManager::Error err; |
586 QContactManager::Error err; |
|
587 QContactFetchHint hint = QContactFetchHint(); |
561 |
588 |
562 QContact c; |
589 QContact c; |
563 c.setType(QContactType::TypeContact); |
590 c.setType(QContactType::TypeContact); |
564 QVERIFY(m_engine->saveContact(&c, err)); |
591 QVERIFY(m_engine->saveContact(&c, &err)); |
565 QVERIFY(err == QContactManager::NoError); |
592 QVERIFY(err == QContactManager::NoError); |
566 |
593 |
567 // Remove existing contact |
594 // Remove existing contact |
568 QContactLocalId id = c.localId(); |
595 QContactLocalId id = c.localId(); |
569 QVERIFY(m_engine->removeContact(id, err)); |
596 QVERIFY(m_engine->removeContact(id, &err)); |
570 QVERIFY(err == QContactManager::NoError); |
597 QVERIFY(err == QContactManager::NoError); |
571 |
598 |
572 // Verify that contact has been removed |
599 // Verify that contact has been removed |
573 QContact f = m_engine->contact(id, QStringList(), err); |
600 QContact f = m_engine->contact(id, hint, &err); |
574 QVERIFY(f.localId() == 0); |
601 QVERIFY(f.localId() == 0); |
575 QVERIFY(err == QContactManager::DoesNotExistError); |
602 QVERIFY(err == QContactManager::DoesNotExistError); |
576 |
603 |
577 // Remove non existent contact |
604 // Remove non existent contact |
578 QVERIFY(!m_engine->removeContact(0, err)); |
605 QVERIFY(!m_engine->removeContact(0, &err)); |
579 QVERIFY(err == QContactManager::DoesNotExistError); |
606 QVERIFY(err == QContactManager::DoesNotExistError); |
580 } |
607 } |
581 |
608 |
582 void TestSymbianEngine::removeContacts() |
609 void TestSymbianEngine::removeContacts() |
583 { |
610 { |
584 QContactManager::Error err; |
611 QContactManager::Error err; |
|
612 QContactFetchHint hint = QContactFetchHint(); |
585 QList<QContactLocalId> contacts; |
613 QList<QContactLocalId> contacts; |
586 int count = 5; |
614 int count = 5; |
587 |
615 |
588 // Remove non existent contacts |
616 // Remove non existent contacts |
589 QMap<int, QContactManager::Error> errorMap; |
617 QMap<int, QContactManager::Error> errorMap; |
590 QVERIFY(m_engine->removeContacts(&contacts, &errorMap, err)); |
618 QVERIFY(m_engine->removeContacts(contacts, &errorMap, &err)); |
591 QVERIFY(err == QContactManager::NoError); |
619 QVERIFY(err == QContactManager::NoError); |
592 QVERIFY(errorMap.count() == 0); |
620 QVERIFY(errorMap.count() == 0); |
593 |
|
594 // NULL argument |
|
595 QVERIFY(!m_engine->removeContacts(NULL, &errorMap, err)); |
|
596 QVERIFY(errorMap.count() == 0); |
|
597 QVERIFY(err == QContactManager::BadArgumentError); |
|
598 |
621 |
599 // Remove existing contacts |
622 // Remove existing contacts |
600 for(int i=0; i<count; i++) { |
623 for(int i=0; i<count; i++) { |
601 QContact c; |
624 QContact c; |
602 c.setType(QContactType::TypeContact); |
625 c.setType(QContactType::TypeContact); |
603 QVERIFY(m_engine->saveContact(&c, err)); |
626 QVERIFY(m_engine->saveContact(&c, &err)); |
604 QVERIFY(err == QContactManager::NoError); |
627 QVERIFY(err == QContactManager::NoError); |
605 contacts.append(c.localId()); |
628 contacts.append(c.localId()); |
606 } |
629 } |
607 QVERIFY(m_engine->removeContacts(&contacts, &errorMap, err)); |
630 QVERIFY(m_engine->removeContacts(contacts, &errorMap, &err)); |
608 QVERIFY(err == QContactManager::NoError); |
631 QVERIFY(err == QContactManager::NoError); |
609 foreach(QContactManager::Error e, errorMap) { |
632 foreach(QContactManager::Error e, errorMap) { |
610 QVERIFY(e == QContactManager::NoError); |
633 QVERIFY(e == QContactManager::NoError); |
611 } |
634 } |
612 |
635 |
613 // Verify that contacts have been removed |
636 // Verify that contacts have been removed |
614 for(int i=0; i<contacts.count(); i++) { |
637 for(int i=0; i<contacts.count(); i++) { |
615 QContact f = m_engine->contact(contacts[i], QStringList(), err); |
638 QContact f = m_engine->contact(contacts[i], hint, &err); |
616 QVERIFY(f.localId() == 0); |
639 QVERIFY(f.localId() == 0); |
617 QVERIFY(err == QContactManager::DoesNotExistError); |
640 QVERIFY(err == QContactManager::DoesNotExistError); |
618 } |
641 } |
619 |
642 |
620 // Remove a list with one non existent contact |
643 // Remove a list with one non existent contact |
621 contacts.clear(); |
644 contacts.clear(); |
622 for(int i=0; i<count; i++) { |
645 for(int i=0; i<count; i++) { |
623 QContact c; |
646 QContact c; |
624 c.setType(QContactType::TypeContact); |
647 c.setType(QContactType::TypeContact); |
625 QVERIFY(m_engine->saveContact(&c, err)); |
648 QVERIFY(m_engine->saveContact(&c, &err)); |
626 QVERIFY(err == QContactManager::NoError); |
649 QVERIFY(err == QContactManager::NoError); |
627 contacts.append(c.localId()); |
650 contacts.append(c.localId()); |
628 } |
651 } |
629 contacts.insert(3, 0); |
652 contacts.insert(3, 0); |
630 |
653 |
631 QVERIFY(!m_engine->removeContacts(&contacts, &errorMap, err)); |
654 QVERIFY(!m_engine->removeContacts(contacts, &errorMap, &err)); |
632 QVERIFY(err == QContactManager::DoesNotExistError); |
655 QVERIFY(err == QContactManager::DoesNotExistError); |
633 foreach(QContactManager::Error e, errorMap) { |
656 foreach(QContactManager::Error e, errorMap) { |
634 QVERIFY(e == QContactManager::DoesNotExistError); |
657 QVERIFY(e == QContactManager::DoesNotExistError); |
635 } |
658 } |
636 |
659 |
637 for(int i=0; i<contacts.count(); i++) { |
660 for(int i=0; i<contacts.count(); i++) { |
638 QContact f = m_engine->contact(contacts[i], QStringList(), err); |
661 QContact f = m_engine->contact(contacts[i], hint, &err); |
639 QVERIFY(f.localId() == 0); |
662 QVERIFY(f.localId() == 0); |
640 QVERIFY(err == QContactManager::DoesNotExistError); |
663 QVERIFY(err == QContactManager::DoesNotExistError); |
641 } |
664 } |
642 } |
665 } |
643 |
666 |
648 // Create a new contact own card |
671 // Create a new contact own card |
649 QContact own; |
672 QContact own; |
650 QContactName ownName; |
673 QContactName ownName; |
651 ownName.setFirstName("Own"); |
674 ownName.setFirstName("Own"); |
652 own.saveDetail(&ownName); |
675 own.saveDetail(&ownName); |
653 QVERIFY(m_engine->saveContact(&own, err)); |
676 QVERIFY(m_engine->saveContact(&own, &err)); |
654 QVERIFY(err == QContactManager::NoError); |
677 QVERIFY(err == QContactManager::NoError); |
655 |
678 |
656 // Set a non existent contact as own card and verify |
679 // Set a non existent contact as own card and verify |
657 // ensure this contact does not exist in dbase |
680 // ensure this contact does not exist in dbase |
658 QContactLocalId id(12); |
681 QContactLocalId id(12); |
659 m_engine->removeContact(id, err); // Dont test err. May or may not be in dbase |
682 m_engine->removeContact(id, &err); // Don't test err. May or may not be in dbase |
660 QVERIFY(!m_engine->setSelfContactId(id, err)); // does not exist |
683 QVERIFY(!m_engine->setSelfContactId(id, &err)); // does not exist |
661 QVERIFY(err == QContactManager::DoesNotExistError); |
684 QVERIFY(err == QContactManager::DoesNotExistError); |
662 |
685 |
663 // Test a "0" contact id |
686 // Test a "0" contact id |
664 QVERIFY(!m_engine->setSelfContactId(0, err)); // Bad argument |
687 QVERIFY(!m_engine->setSelfContactId(0, &err)); // Bad argument |
665 QVERIFY(err == QContactManager::BadArgumentError); |
688 QVERIFY(err == QContactManager::BadArgumentError); |
666 |
689 |
667 // Set an existent contact as own card |
690 // Set an existent contact as own card |
668 QVERIFY(m_engine->setSelfContactId(own.localId(), err)); |
691 QVERIFY(m_engine->setSelfContactId(own.localId(), &err)); |
669 QVERIFY(err == QContactManager::NoError); |
692 QVERIFY(err == QContactManager::NoError); |
670 } |
693 } |
671 |
694 |
672 void TestSymbianEngine::retrieveOwnCard() |
695 void TestSymbianEngine::retrieveOwnCard() |
673 { |
696 { |
812 // More relationships logic is tested in relationship unit tests. |
835 // More relationships logic is tested in relationship unit tests. |
813 // We do simple tests here |
836 // We do simple tests here |
814 QContactManager::Error error; |
837 QContactManager::Error error; |
815 |
838 |
816 QContact a; |
839 QContact a; |
817 QVERIFY(m_engine->saveContact(&a, error)); |
840 QVERIFY(m_engine->saveContact(&a, &error)); |
818 QContact b; |
841 QContact b; |
819 QVERIFY(m_engine->saveContact(&b, error)); |
842 QVERIFY(m_engine->saveContact(&b, &error)); |
820 |
843 |
821 QContactRelationship rel; |
844 QContactRelationship rel; |
822 rel.setFirst(a.id()); |
845 rel.setFirst(a.id()); |
823 rel.setSecond(b.id()); |
846 rel.setSecond(b.id()); |
824 rel.setRelationshipType(QContactRelationship::HasSpouse); |
847 rel.setRelationshipType(QContactRelationship::HasSpouse); |
825 |
848 |
826 // Add relationship |
849 // Add relationship |
827 m_engine->saveRelationship(&rel, error); |
850 m_engine->saveRelationship(&rel, &error); |
828 bool isValid(false); |
851 bool isValid(false); |
829 if (error == QContactManager::NoError || |
852 if (error == QContactManager::NoError || |
830 error == QContactManager::NotSupportedError) |
853 error == QContactManager::NotSupportedError) |
831 isValid = true; |
854 isValid = true; |
832 |
855 |
833 QVERIFY(isValid); |
856 QVERIFY(isValid); |
834 |
857 |
835 // Remove relationship |
858 // Remove relationship |
836 m_engine->removeRelationship(rel, error); |
859 m_engine->removeRelationship(rel, &error); |
837 if (error == QContactManager::NoError || |
860 if (error == QContactManager::NoError || |
838 error == QContactManager::NotSupportedError) |
861 error == QContactManager::NotSupportedError) |
839 isValid = true; |
862 isValid = true; |
840 else |
863 else |
841 isValid = false; |
864 isValid = false; |
842 QVERIFY(isValid); |
865 QVERIFY(isValid); |
843 |
866 |
844 QStringList supportedRelationships = |
867 // TODO: replacement? |
|
868 /*QStringList supportedRelationships = |
845 m_engine->supportedRelationshipTypes(QContactType::TypeGroup); |
869 m_engine->supportedRelationshipTypes(QContactType::TypeGroup); |
846 QVERIFY(supportedRelationships.contains(QContactRelationship::HasMember)); |
870 QVERIFY(supportedRelationships.contains(QContactRelationship::HasMember)); |
|
871 */ |
847 } |
872 } |
848 |
873 |
849 void TestSymbianEngine::batchRelationships() |
874 void TestSymbianEngine::batchRelationships() |
850 { |
875 { |
851 // More relationships logic is tested somewhere else. |
876 // More relationships logic is tested somewhere else. |
852 // We do simple tests here |
877 // We do simple tests here |
853 QContactManager::Error error; |
878 QContactManager::Error error; |
854 |
879 |
855 QContact a; |
880 QContact a; |
856 QVERIFY(m_engine->saveContact(&a, error)); |
881 QVERIFY(m_engine->saveContact(&a, &error)); |
857 QContact b; |
882 QContact b; |
858 QVERIFY(m_engine->saveContact(&b, error)); |
883 QVERIFY(m_engine->saveContact(&b, &error)); |
859 |
884 |
860 QContactRelationship rel; |
885 QContactRelationship rel; |
861 rel.setFirst(a.id()); |
886 rel.setFirst(a.id()); |
862 rel.setSecond(b.id()); |
887 rel.setSecond(b.id()); |
863 rel.setRelationshipType(QContactRelationship::HasSpouse); |
888 rel.setRelationshipType(QContactRelationship::HasSpouse); |
865 QList<QContactRelationship> list; |
890 QList<QContactRelationship> list; |
866 list.append(rel); |
891 list.append(rel); |
867 bool isValid(false); |
892 bool isValid(false); |
868 |
893 |
869 // Add relationships |
894 // Add relationships |
870 QList<QContactManager::Error> errors = m_engine->saveRelationships(&list, error); |
895 QMap<int, QContactManager::Error> errorMap; |
871 QVERIFY(&errors != NULL); |
896 QVERIFY(m_engine->saveRelationships(&list, &errorMap, &error)); |
872 foreach(QContactManager::Error err, errors) { |
897 foreach(QContactManager::Error err, errorMap) { |
873 if (err == QContactManager::NoError || |
898 if (err == QContactManager::NoError || |
874 err == QContactManager::NotSupportedError) |
899 err == QContactManager::NotSupportedError) |
875 isValid = true; |
900 isValid = true; |
876 else |
901 else |
877 isValid = false; |
902 isValid = false; |
878 QVERIFY(isValid); |
903 QVERIFY(isValid); |
879 } |
904 } |
880 |
905 |
881 // fetch relationships |
906 // fetch relationships |
882 QContactRelationshipFilter::Role role; |
907 QContactRelationship::Role role; |
883 role = QContactRelationshipFilter::First; |
908 role = QContactRelationship::First; |
884 list.clear(); |
909 list.clear(); |
885 list = m_engine->relationships(QContactRelationship::HasSpouse, a.id(), role, error); |
910 list = m_engine->relationships(QContactRelationship::HasSpouse, a.id(), role, &error); |
886 QVERIFY(&list != NULL); |
911 QVERIFY(&list != NULL); |
887 if (error == QContactManager::NoError || |
912 if (error == QContactManager::NoError || |
888 error == QContactManager::NotSupportedError) |
913 error == QContactManager::NotSupportedError) |
889 isValid = true; |
914 isValid = true; |
890 else |
915 else |
891 isValid = false; |
916 isValid = false; |
892 QVERIFY(isValid); |
917 QVERIFY(isValid); |
893 |
918 |
894 // Remove relationships |
919 // Remove relationships |
895 errors = m_engine->removeRelationships(list, error); |
920 QVERIFY(m_engine->removeRelationships(list, &errorMap, &error)); |
896 QVERIFY(&errors != NULL); |
921 foreach(QContactManager::Error err, errorMap) { |
897 foreach(QContactManager::Error err, errors) { |
|
898 if (err == QContactManager::NoError || |
922 if (err == QContactManager::NoError || |
899 err == QContactManager::NotSupportedError) |
923 err == QContactManager::NotSupportedError) |
900 isValid = true; |
924 isValid = true; |
901 else |
925 else |
902 isValid = false; |
926 isValid = false; |
913 void TestSymbianEngine::synthesizeDisplaylable() |
937 void TestSymbianEngine::synthesizeDisplaylable() |
914 { |
938 { |
915 QContactManager::Error err = QContactManager::NoError; |
939 QContactManager::Error err = QContactManager::NoError; |
916 |
940 |
917 QContact empty; |
941 QContact empty; |
918 QString label = m_engine->synthesizedDisplayLabel(empty, err); |
942 QString label = m_engine->synthesizedDisplayLabel(empty, &err); |
919 QVERIFY(err == QContactManager::NoError); |
943 QVERIFY(err == QContactManager::NoError); |
920 QVERIFY(label == QString("Unnamed")); |
944 QVERIFY(label == QString("Unnamed")); |
921 |
945 |
922 QContact first; |
946 QContact first; |
923 QContactName fn; |
947 QContactName fn; |
924 fn.setFirstName("Alice"); |
948 fn.setFirstName("Alice"); |
925 first.saveDetail(&fn); |
949 first.saveDetail(&fn); |
926 label = m_engine->synthesizedDisplayLabel(first, err); |
950 label = m_engine->synthesizedDisplayLabel(first, &err); |
927 QVERIFY(err == QContactManager::NoError); |
951 QVERIFY(err == QContactManager::NoError); |
928 QVERIFY(label == QString("Alice")); |
952 QVERIFY(label == QString("Alice")); |
929 |
953 |
930 QContact last; |
954 QContact last; |
931 QContactName ln; |
955 QContactName ln; |
932 ln.setLastName("Jones"); |
956 ln.setLastName("Jones"); |
933 last.saveDetail(&ln); |
957 last.saveDetail(&ln); |
934 label = m_engine->synthesizedDisplayLabel(last, err); |
958 label = m_engine->synthesizedDisplayLabel(last, &err); |
935 QVERIFY(err == QContactManager::NoError); |
959 QVERIFY(err == QContactManager::NoError); |
936 QVERIFY(label == QString("Jones")); |
960 QVERIFY(label == QString("Jones")); |
937 |
961 |
938 QContact orgContact; |
962 QContact orgContact; |
939 QContactOrganization org; |
963 QContactOrganization org; |
940 org.setName("Nokia"); |
964 org.setName("Nokia"); |
941 org.setDepartment(QStringList("Services")); |
965 org.setDepartment(QStringList("Services")); |
942 org.setTitle("Assistant Manager"); |
966 org.setTitle("Assistant Manager"); |
943 org.setLocation("Nokia Cyber Park"); |
967 org.setLocation("Nokia Cyber Park"); |
944 orgContact.saveDetail(&org); |
968 orgContact.saveDetail(&org); |
945 label = m_engine->synthesizedDisplayLabel(orgContact, err); |
969 label = m_engine->synthesizedDisplayLabel(orgContact, &err); |
946 QVERIFY(err == QContactManager::NoError); |
970 QVERIFY(err == QContactManager::NoError); |
947 QVERIFY(label == QString("Nokia")); |
971 QVERIFY(label == QString("Nokia")); |
948 |
972 |
949 QContact jargon; |
973 QContact jargon; |
950 jargon.setType("jargon"); |
974 jargon.setType("jargon"); |
951 label = m_engine->synthesizedDisplayLabel(jargon, err); |
975 label = m_engine->synthesizedDisplayLabel(jargon, &err); |
952 QVERIFY(err == QContactManager::InvalidContactTypeError); |
976 QVERIFY(err == QContactManager::InvalidContactTypeError); |
953 QVERIFY(label.isEmpty()); |
977 QVERIFY(label.isEmpty()); |
954 |
978 |
955 QContact group; |
979 QContact group; |
956 group.setType(QContactType::TypeGroup); |
980 group.setType(QContactType::TypeGroup); |
957 QContactName gn; |
981 QContactName gn; |
958 gn.setCustomLabel("grouplable"); |
982 gn.setCustomLabel("grouplable"); |
959 group.saveDetail(&gn); |
983 group.saveDetail(&gn); |
960 label = m_engine->synthesizedDisplayLabel(group, err); |
984 label = m_engine->synthesizedDisplayLabel(group, &err); |
961 QVERIFY(err == QContactManager::NoError); |
985 QVERIFY(err == QContactManager::NoError); |
962 QVERIFY(label == QString("grouplable")); |
986 QVERIFY(label == QString("grouplable")); |
963 } |
987 } |
964 |
988 |
965 void TestSymbianEngine::definitionDetails() |
989 void TestSymbianEngine::definitionDetails() |
966 { |
990 { |
967 QMap<QString, QContactDetailDefinition> defs; |
991 QMap<QString, QContactDetailDefinition> defs; |
968 QContactManager::Error err; |
992 QContactManager::Error err; |
969 |
993 |
970 // Wrong contact type |
994 // Wrong contact type |
971 defs = m_engine->detailDefinitions("aerafa", err); |
995 defs = m_engine->detailDefinitions("aerafa", &err); |
972 QVERIFY(err = QContactManager::InvalidContactTypeError); |
996 QVERIFY(err = QContactManager::InvalidContactTypeError); |
973 QVERIFY(defs.count() == 0); |
997 QVERIFY(defs.count() == 0); |
974 |
998 |
975 // Valid defs |
999 // Valid defs |
976 defs = m_engine->detailDefinitions(QContactType::TypeContact, err); |
1000 defs = m_engine->detailDefinitions(QContactType::TypeContact, &err); |
977 QVERIFY(err == QContactManager::NoError); |
1001 QVERIFY(err == QContactManager::NoError); |
978 defs = m_engine->detailDefinitions(QContactType::TypeGroup, err); |
1002 defs = m_engine->detailDefinitions(QContactType::TypeGroup, &err); |
979 QVERIFY(err == QContactManager::NoError); |
1003 QVERIFY(err == QContactManager::NoError); |
980 } |
1004 } |
|
1005 |
|
1006 void TestSymbianEngine::asyncRequests() |
|
1007 { |
|
1008 //create a contact |
|
1009 QContactManager::Error err; |
|
1010 QContact dummy; |
|
1011 dummy.setType(QContactType::TypeContact); |
|
1012 QContactName name; |
|
1013 name.setFirstName("dummy"); |
|
1014 dummy.saveDetail(&name); |
|
1015 QVERIFY(m_engine->saveContact(&dummy, &err)); |
|
1016 QVERIFY(err == QContactManager::NoError); |
|
1017 |
|
1018 //create a group with members |
|
1019 QContact groupContact; |
|
1020 groupContact.setType(QContactType::TypeGroup); |
|
1021 m_engine->saveContact(&groupContact, &err); |
|
1022 QVERIFY(err == QContactManager::NoError); |
|
1023 QContactRelationship relationship; |
|
1024 relationship.setRelationshipType(QContactRelationship::HasMember); |
|
1025 relationship.setFirst(groupContact.id()); |
|
1026 relationship.setSecond(dummy.id()); |
|
1027 bool returnValue(false); |
|
1028 returnValue = m_engine->saveRelationship(&relationship, &err); |
|
1029 QVERIFY(returnValue == true); |
|
1030 QVERIFY(err == QContactManager::NoError); |
|
1031 |
|
1032 //fetch request |
|
1033 QContactFetchRequest fetch; |
|
1034 QVERIFY(m_engine->startRequest(&fetch)); |
|
1035 QTest::qWait(1000); //1sec |
|
1036 QVERIFY(fetch.error() == QContactManager::NoError); |
|
1037 QVERIFY(fetch.state() == QContactFetchRequest::FinishedState); |
|
1038 QVERIFY(fetch.contacts().count() > 0); |
|
1039 |
|
1040 //fetch ids request |
|
1041 QContactLocalIdFetchRequest fetchIds; |
|
1042 QVERIFY(m_engine->startRequest(&fetchIds)); |
|
1043 QTest::qWait(1000); //1sec |
|
1044 QVERIFY(fetchIds.error() == QContactManager::NoError); |
|
1045 QVERIFY(fetchIds.state() == QContactFetchRequest::FinishedState); |
|
1046 QVERIFY(fetchIds.ids().count() > 0); |
|
1047 |
|
1048 //save request |
|
1049 QContactSaveRequest saveReq; |
|
1050 QContact c; |
|
1051 c.setType(QContactType::TypeContact); |
|
1052 QList<QContact> contactList; |
|
1053 contactList += c; |
|
1054 saveReq.setContacts(contactList); |
|
1055 QVERIFY(m_engine->startRequest(&saveReq)); |
|
1056 QTest::qWait(1000); //1sec |
|
1057 QVERIFY(saveReq.error() == QContactManager::NoError); |
|
1058 QVERIFY(saveReq.state() == QContactFetchRequest::FinishedState); |
|
1059 QVERIFY(saveReq.contacts().count() > 0); |
|
1060 |
|
1061 //remove request |
|
1062 QContactRemoveRequest removeReq; |
|
1063 QList<QContactLocalId> idList; |
|
1064 idList += saveReq.contacts().at(0).localId(); |
|
1065 removeReq.setContactIds(idList); |
|
1066 QVERIFY(m_engine->startRequest(&removeReq)); |
|
1067 QTest::qWait(1000); //1sec |
|
1068 int err_temp = removeReq.error(); |
|
1069 QVERIFY(removeReq.error() == QContactManager::NoError); |
|
1070 QVERIFY(removeReq.state() == QContactFetchRequest::FinishedState); |
|
1071 |
|
1072 //detail definition request |
|
1073 QContactDetailDefinitionFetchRequest detDefReq; |
|
1074 detDefReq.setContactType(QContactType::TypeContact); |
|
1075 QStringList defList; |
|
1076 defList += QContactName::DefinitionName; |
|
1077 detDefReq.setDefinitionNames(defList); |
|
1078 QVERIFY(m_engine->startRequest(&detDefReq)); |
|
1079 QTest::qWait(1000); //1sec |
|
1080 QVERIFY(detDefReq.error() == QContactManager::NoError); |
|
1081 QVERIFY(detDefReq.state() == QContactFetchRequest::FinishedState); |
|
1082 |
|
1083 //relationship fetch request |
|
1084 QContactRelationshipFetchRequest relFetchReq; |
|
1085 relFetchReq.setFirst(groupContact.id()); |
|
1086 relFetchReq.setSecond(dummy.id()); |
|
1087 relFetchReq.setRelationshipType(QContactRelationship::HasMember); |
|
1088 QVERIFY(m_engine->startRequest(&relFetchReq)); |
|
1089 QTest::qWait(1000); //1sec |
|
1090 QVERIFY(relFetchReq.error() == QContactManager::NoError); |
|
1091 QVERIFY(relFetchReq.state() == QContactFetchRequest::FinishedState); |
|
1092 QVERIFY(relFetchReq.relationships().count() > 0); |
|
1093 |
|
1094 //relationship remove request |
|
1095 QContactRelationshipRemoveRequest relRemoveReq; |
|
1096 QList<QContactRelationship> relList; |
|
1097 relList += relationship; |
|
1098 relRemoveReq.setRelationships(relList); |
|
1099 QVERIFY(m_engine->startRequest(&relRemoveReq)); |
|
1100 QTest::qWait(1000); //1sec |
|
1101 QVERIFY(relRemoveReq.error() == QContactManager::NoError); |
|
1102 QVERIFY(relRemoveReq.state() == QContactFetchRequest::FinishedState); |
|
1103 |
|
1104 //relationship save request |
|
1105 QContactRelationshipSaveRequest relSaveReq; |
|
1106 relSaveReq.setRelationships(relList); |
|
1107 QVERIFY(m_engine->startRequest(&relSaveReq)); |
|
1108 QTest::qWait(1000); //1sec |
|
1109 QVERIFY(relSaveReq.error() == QContactManager::NoError); |
|
1110 QVERIFY(relSaveReq.state() == QContactFetchRequest::FinishedState); |
|
1111 |
|
1112 //cancel request |
|
1113 QVERIFY(m_engine->startRequest(&relRemoveReq)); |
|
1114 m_engine->cancelRequest(&relRemoveReq); |
|
1115 QTest::qWait(1000); //1sec |
|
1116 QVERIFY(relRemoveReq.error() == QContactManager::NoError); |
|
1117 QVERIFY(relRemoveReq.state() == QContactFetchRequest::CanceledState); |
|
1118 |
|
1119 //wait for a request finish |
|
1120 QVERIFY(!m_engine->waitForRequestFinished(&relSaveReq, 1000)); |
|
1121 QVERIFY(m_engine->startRequest(&relRemoveReq)); |
|
1122 QVERIFY(m_engine->waitForRequestFinished(&relRemoveReq, 1000)); |
|
1123 QTest::qWait(1000); //1sec |
|
1124 QVERIFY(relRemoveReq.error() == QContactManager::NoError); |
|
1125 QVERIFY(relRemoveReq.state() == QContactFetchRequest::FinishedState); |
|
1126 |
|
1127 //destroy request |
|
1128 QVERIFY(m_engine->startRequest(&relRemoveReq)); |
|
1129 m_engine->requestDestroyed(&relRemoveReq); |
|
1130 QVERIFY(!m_engine->m_asynchronousOperations.contains(&relRemoveReq)); |
|
1131 } |