|
1 /**************************************************************************** |
|
2 ** |
|
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). |
|
4 ** All rights reserved. |
|
5 ** Contact: Nokia Corporation (qt-info@nokia.com) |
|
6 ** |
|
7 ** This file is part of the Qt Mobility Components. |
|
8 ** |
|
9 ** $QT_BEGIN_LICENSE:LGPL$ |
|
10 ** No Commercial Usage |
|
11 ** This file contains pre-release code and may not be distributed. |
|
12 ** You may use this file in accordance with the terms and conditions |
|
13 ** contained in the Technology Preview License Agreement accompanying |
|
14 ** this package. |
|
15 ** |
|
16 ** GNU Lesser General Public License Usage |
|
17 ** Alternatively, this file may be used under the terms of the GNU Lesser |
|
18 ** General Public License version 2.1 as published by the Free Software |
|
19 ** Foundation and appearing in the file LICENSE.LGPL included in the |
|
20 ** packaging of this file. Please review the following information to |
|
21 ** ensure the GNU Lesser General Public License version 2.1 requirements |
|
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
|
23 ** |
|
24 ** In addition, as a special exception, Nokia gives you certain additional |
|
25 ** rights. These rights are described in the Nokia Qt LGPL Exception |
|
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
|
27 ** |
|
28 ** If you have questions regarding the use of this file, please contact |
|
29 ** Nokia at qt-info@nokia.com. |
|
30 ** |
|
31 ** |
|
32 ** |
|
33 ** |
|
34 ** |
|
35 ** |
|
36 ** |
|
37 ** |
|
38 ** $QT_END_LICENSE$ |
|
39 ** |
|
40 ****************************************************************************/ |
|
41 |
|
42 #include "ut_cntsymbianengine.h" |
|
43 #include "cntsymbianengine.h" |
|
44 #include "qcontactrelationship.h" |
|
45 #include "qcontactrelationshipfilter.h" |
|
46 |
|
47 #include <qcontactmanager.h> |
|
48 #include <qcontactdetailfilter.h> |
|
49 #include <qcontactorganization.h> |
|
50 #include <qcontactemailaddress.h> |
|
51 #include <qcontactguid.h> |
|
52 |
|
53 #include <QtTest/QtTest> |
|
54 |
|
55 void TestSymbianEngine::initTestCase() |
|
56 { |
|
57 QContactManager::Error error; |
|
58 QMap<QString, QString> emptyParameters; |
|
59 |
|
60 m_engine = new CntSymbianEngine(emptyParameters, &error); |
|
61 if (error == QContactManager::NoError) |
|
62 removeAllContacts(); |
|
63 else |
|
64 QSKIP("Error creating manager", SkipAll); |
|
65 } |
|
66 |
|
67 void TestSymbianEngine::cleanupTestCase() |
|
68 { |
|
69 removeAllContacts(); |
|
70 delete m_engine; |
|
71 } |
|
72 |
|
73 void TestSymbianEngine::init() |
|
74 { |
|
75 } |
|
76 |
|
77 void TestSymbianEngine::cleanup() |
|
78 { |
|
79 removeAllContacts(); |
|
80 } |
|
81 |
|
82 void TestSymbianEngine::removeAllContacts() |
|
83 { |
|
84 if(m_engine) { |
|
85 // Empty cnt database |
|
86 QContactManager::Error err(QContactManager::NoError); |
|
87 QList<QContactSortOrder> sortOrders; |
|
88 QContactFilter defaultFilter = QContactFilter(); |
|
89 QList<QContactLocalId> cnts_ids = m_engine->contactIds(defaultFilter, sortOrders, &err); |
|
90 QVERIFY(err == QContactManager::NoError); |
|
91 |
|
92 for(int i=0; i<cnts_ids.count(); i++) { |
|
93 QVERIFY(m_engine->removeContact(cnts_ids[i], &err)); |
|
94 } |
|
95 } |
|
96 } |
|
97 |
|
98 void TestSymbianEngine::ctors() |
|
99 { |
|
100 QContactManager::Error error; |
|
101 QMap<QString, QString> params; |
|
102 |
|
103 // Ctor |
|
104 CntSymbianEngine *ce; |
|
105 ce = new CntSymbianEngine(params, &error); |
|
106 QVERIFY(ce != NULL); |
|
107 QVERIFY(error == QContactManager::NoError); |
|
108 if (error == QContactManager::NoError) { |
|
109 QVERIFY(ce->managerName() == CNT_SYMBIAN_MANAGER_NAME); |
|
110 QVERIFY(ce->m_contactFilter != 0); |
|
111 QVERIFY(ce->m_dataBase != 0); |
|
112 QVERIFY(ce->m_relationship != 0); |
|
113 QVERIFY(ce->m_transformContact != 0); |
|
114 } else { |
|
115 QSKIP("Error creating CntSymbianEngine in ctor", SkipSingle); |
|
116 } |
|
117 |
|
118 delete ce; |
|
119 } |
|
120 |
|
121 void TestSymbianEngine::saveContact() |
|
122 { |
|
123 QContactManager::Error err; |
|
124 QList<QContactSortOrder> sortOrders; |
|
125 QContactId empty; |
|
126 QContactFilter defaultFilter = QContactFilter(); |
|
127 |
|
128 int init_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
129 QVERIFY(err == QContactManager::NoError); |
|
130 |
|
131 // Save a "NULL" contact |
|
132 QVERIFY(!m_engine->saveContact(NULL, &err)); |
|
133 QVERIFY(err == QContactManager::BadArgumentError); |
|
134 int current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
135 QVERIFY(err == QContactManager::NoError); |
|
136 QVERIFY(init_count == current_count); |
|
137 |
|
138 // Save a contact that is not in database |
|
139 QContact invaId; |
|
140 QVERIFY(m_engine->saveContact(&invaId, &err)); // Add to db |
|
141 QVERIFY(err == QContactManager::NoError); |
|
142 QContactId cId = invaId.id(); |
|
143 m_engine->removeContact(invaId.localId(), &err); // Ensure not in db |
|
144 QVERIFY(err == QContactManager::NoError); |
|
145 invaId.setId(cId); |
|
146 QVERIFY(!m_engine->saveContact(&invaId, &err)); // Update non existent contact |
|
147 QVERIFY(err == QContactManager::DoesNotExistError); |
|
148 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
149 QVERIFY(err == QContactManager::NoError); |
|
150 QVERIFY(init_count == current_count); |
|
151 |
|
152 QContact alice; |
|
153 alice.setType("Jargon"); |
|
154 |
|
155 // Save a "non contact(Jargon) type" contact |
|
156 QVERIFY(!m_engine->saveContact(&alice, &err)); |
|
157 QVERIFY(err == QContactManager::InvalidDetailError); |
|
158 QVERIFY(alice.id() == empty); |
|
159 QVERIFY(alice.localId() == 0); |
|
160 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
161 QVERIFY(err == QContactManager::NoError); |
|
162 QVERIFY(init_count == current_count); |
|
163 |
|
164 // Save a valid contact |
|
165 alice.setType(QContactType::TypeContact); |
|
166 QVERIFY(m_engine->saveContact(&alice, &err)); |
|
167 QVERIFY(err == QContactManager::NoError); |
|
168 QVERIFY(alice.id() != empty); |
|
169 QVERIFY(alice.localId() != 0); |
|
170 QString uri = QString(QLatin1String(CNT_SYMBIAN_MANAGER_NAME)); |
|
171 QVERIFY(alice.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
|
172 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
173 QVERIFY(err == QContactManager::NoError); |
|
174 QVERIFY(init_count + 1 == current_count); |
|
175 |
|
176 // Save a valid contact |
|
177 QContact g; |
|
178 g.setType(QContactType::TypeGroup); |
|
179 QContactName en; |
|
180 en.setCustomLabel("ccc"); |
|
181 QVERIFY(g.saveDetail(&en)); |
|
182 QVERIFY(m_engine->saveContact(&g, &err)); |
|
183 QVERIFY(err == QContactManager::NoError); |
|
184 QVERIFY(g.id() != empty); |
|
185 QVERIFY(g.localId() != 0); |
|
186 QVERIFY(g.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
|
187 } |
|
188 |
|
189 void TestSymbianEngine::saveContactWithPreferredDetails() |
|
190 { |
|
191 QContactManager::Error err; |
|
192 |
|
193 //save a contact with preferred details |
|
194 QContact c; |
|
195 c.setType(QContactType::TypeContact); |
|
196 |
|
197 QContactPhoneNumber number1; |
|
198 number1.setNumber("123"); |
|
199 number1.setSubTypes(QContactPhoneNumber::SubTypeMobile); |
|
200 c.saveDetail(&number1); |
|
201 c.setPreferredDetail("call", number1); |
|
202 |
|
203 QContactPhoneNumber number2; |
|
204 number2.setNumber("456"); |
|
205 number2.setSubTypes(QContactPhoneNumber::SubTypeMobile); |
|
206 c.saveDetail(&number2); |
|
207 c.setPreferredDetail("videocall", number2); |
|
208 |
|
209 QContactPhoneNumber number3; |
|
210 number3.setNumber("789"); |
|
211 number3.setSubTypes(QContactPhoneNumber::SubTypeMobile); |
|
212 c.saveDetail(&number3); |
|
213 c.setPreferredDetail("message", number3); |
|
214 |
|
215 QContactEmailAddress email; |
|
216 email.setEmailAddress("dummyemail"); |
|
217 c.saveDetail(&email); |
|
218 c.setPreferredDetail("email", email); |
|
219 |
|
220 QVERIFY(m_engine->saveContact(&c, &err)); |
|
221 QVERIFY(err == QContactManager::NoError); |
|
222 |
|
223 //fetch the saved contact and check preferred details |
|
224 QContactFetchHint hint = QContactFetchHint(); |
|
225 QContact fetched = m_engine->contact(c.localId(), hint, &err); |
|
226 QVERIFY(err == QContactManager::NoError); |
|
227 |
|
228 QContactDetail callDetail1 = fetched.preferredDetail("call"); |
|
229 QVERIFY(callDetail1.definitionName() == QContactPhoneNumber::DefinitionName); |
|
230 QContactPhoneNumber fetchedNumber1 = static_cast<QContactPhoneNumber>(callDetail1); |
|
231 QVERIFY(fetchedNumber1.number() == "123"); |
|
232 |
|
233 QContactDetail callDetail2 = fetched.preferredDetail("videocall"); |
|
234 QVERIFY(callDetail2.definitionName() == QContactPhoneNumber::DefinitionName); |
|
235 QContactPhoneNumber fetchedNumber2 = static_cast<QContactPhoneNumber>(callDetail2); |
|
236 QVERIFY(fetchedNumber2.number() == "456"); |
|
237 |
|
238 QContactDetail callDetail3 = fetched.preferredDetail("message"); |
|
239 QVERIFY(callDetail3.definitionName() == QContactPhoneNumber::DefinitionName); |
|
240 QContactPhoneNumber fetchedNumber3 = static_cast<QContactPhoneNumber>(callDetail3); |
|
241 QVERIFY(fetchedNumber3.number() == "789"); |
|
242 |
|
243 QContactDetail emailDetail = fetched.preferredDetail("email"); |
|
244 QVERIFY(emailDetail.definitionName() == QContactEmailAddress::DefinitionName); |
|
245 QContactEmailAddress fetchedEmail = static_cast<QContactEmailAddress>(emailDetail); |
|
246 QVERIFY(fetchedEmail.emailAddress() == "dummyemail"); |
|
247 |
|
248 //save a contact with one preferred details for several actions |
|
249 QContact c2; |
|
250 c2.setType(QContactType::TypeContact); |
|
251 c2.saveDetail(&number1); |
|
252 c2.setPreferredDetail("call", number1); |
|
253 c2.setPreferredDetail("videocall", number1); |
|
254 c2.setPreferredDetail("message", number1); |
|
255 |
|
256 QVERIFY(m_engine->saveContact(&c2, &err)); |
|
257 QVERIFY(err == QContactManager::NoError); |
|
258 |
|
259 //fetch the saved contact and check preferred details |
|
260 QContact fetched2 = m_engine->contact(c2.localId(), hint, &err); |
|
261 QVERIFY(err == QContactManager::NoError); |
|
262 |
|
263 QContactDetail callDetail4 = fetched2.preferredDetail("call"); |
|
264 QVERIFY(callDetail4.definitionName() == QContactPhoneNumber::DefinitionName); |
|
265 QContactPhoneNumber fetchedNumber4 = static_cast<QContactPhoneNumber>(callDetail4); |
|
266 QVERIFY(fetchedNumber4.number() == "123"); |
|
267 |
|
268 QContactDetail callDetail5 = fetched2.preferredDetail("videocall"); |
|
269 QVERIFY(callDetail5.definitionName() == QContactPhoneNumber::DefinitionName); |
|
270 QContactPhoneNumber fetchedNumber5 = static_cast<QContactPhoneNumber>(callDetail5); |
|
271 QVERIFY(fetchedNumber5.number() == "123"); |
|
272 |
|
273 QContactDetail callDetail6 = fetched2.preferredDetail("message"); |
|
274 QVERIFY(callDetail6.definitionName() == QContactPhoneNumber::DefinitionName); |
|
275 QContactPhoneNumber fetchedNumber6 = static_cast<QContactPhoneNumber>(callDetail6); |
|
276 QVERIFY(fetchedNumber6.number() == "123"); |
|
277 } |
|
278 |
|
279 void TestSymbianEngine::saveContacts() |
|
280 { |
|
281 QContactManager::Error err; |
|
282 QContactFilter defaultFilter = QContactFilter(); |
|
283 QList<QContactSortOrder> sortOrders; |
|
284 QList<QContact> contacts; |
|
285 QContactId empty; |
|
286 int count = 5; |
|
287 |
|
288 int init_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
289 QVERIFY(err == QContactManager::NoError); |
|
290 |
|
291 // NULL |
|
292 QMap<int, QContactManager::Error> errorMap; |
|
293 QVERIFY(!m_engine->saveContacts(NULL, &errorMap, &err)); |
|
294 QVERIFY(errorMap.count() == 0); |
|
295 QVERIFY(err == QContactManager::BadArgumentError); |
|
296 int current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
297 QVERIFY(err == QContactManager::NoError); |
|
298 QVERIFY(init_count == current_count); |
|
299 |
|
300 // Save a "non contact(Jargon) type" contacts |
|
301 for(int i=0; i<count; i++) { |
|
302 QContact alice; |
|
303 alice.setType("Jargon"); |
|
304 contacts.append(alice); |
|
305 } |
|
306 QVERIFY(!m_engine->saveContacts(&contacts, &errorMap, &err)); |
|
307 QVERIFY(err == QContactManager::InvalidDetailError); |
|
308 foreach(QContactManager::Error err, errorMap) { |
|
309 QVERIFY(err == QContactManager::InvalidDetailError); |
|
310 } |
|
311 foreach(const QContact& c, contacts) { |
|
312 QVERIFY(c.id() == empty); |
|
313 QVERIFY(c.localId() == 0); |
|
314 } |
|
315 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
316 QVERIFY(err == QContactManager::NoError); |
|
317 QVERIFY(init_count == current_count); |
|
318 contacts.clear(); |
|
319 |
|
320 // Save valid contacts |
|
321 for(int i=0; i<count; i++) { |
|
322 QContact alice; |
|
323 alice.setType(QContactType::TypeContact); |
|
324 contacts.append(alice); |
|
325 } |
|
326 QVERIFY(m_engine->saveContacts(&contacts, &errorMap, &err)); |
|
327 QVERIFY(err == QContactManager::NoError); |
|
328 foreach(QContactManager::Error err, errorMap) { |
|
329 QVERIFY(err == QContactManager::NoError); |
|
330 } |
|
331 QString uri = QString(QLatin1String(CNT_SYMBIAN_MANAGER_NAME)); |
|
332 foreach(const QContact& c, contacts) { |
|
333 QVERIFY(c.id() != empty); |
|
334 QVERIFY(c.localId() != 0); |
|
335 QVERIFY(c.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
|
336 } |
|
337 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
338 QVERIFY(err == QContactManager::NoError); |
|
339 QVERIFY(init_count + count == current_count); |
|
340 contacts.clear(); |
|
341 |
|
342 // Save with one invalid contact in list |
|
343 init_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
344 for(int i=0; i<count; i++) { |
|
345 QContact alice; |
|
346 alice.setType(QContactType::TypeContact); |
|
347 contacts.append(alice); |
|
348 } |
|
349 QContact invalid; |
|
350 invalid.setType("Jasdfasd"); |
|
351 contacts.insert(3, invalid); |
|
352 |
|
353 QVERIFY(!m_engine->saveContacts(&contacts, &errorMap, &err)); |
|
354 QVERIFY(err == QContactManager::InvalidDetailError); |
|
355 foreach(QContactManager::Error err, errorMap) { |
|
356 QVERIFY(err == QContactManager::InvalidDetailError); |
|
357 } |
|
358 |
|
359 for(int i=0; i<contacts.count(); i++) { |
|
360 QContact c = contacts[i]; |
|
361 if (i == 3) { |
|
362 QVERIFY(c.id() == empty); |
|
363 QVERIFY(c.localId() == 0); |
|
364 } else { |
|
365 QVERIFY(c.id() != empty); |
|
366 QVERIFY(c.localId() != 0); |
|
367 QVERIFY(c.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
|
368 } |
|
369 } |
|
370 current_count = m_engine->contactIds(defaultFilter, sortOrders, &err).count(); |
|
371 QVERIFY(err == QContactManager::NoError); |
|
372 QVERIFY(init_count + count == current_count); |
|
373 contacts.clear(); |
|
374 } |
|
375 |
|
376 void TestSymbianEngine::retrieveContact() |
|
377 { |
|
378 QContactManager::Error err; |
|
379 QContactFetchHint hint = QContactFetchHint(); |
|
380 |
|
381 QContact alice; |
|
382 alice.setType(QContactType::TypeContact); |
|
383 QVERIFY(m_engine->saveContact(&alice, &err)); |
|
384 QVERIFY(err == QContactManager::NoError); |
|
385 |
|
386 // Retrieve "non contact" |
|
387 QContact c = m_engine->contact(0, hint, &err); |
|
388 QVERIFY(&c != NULL); |
|
389 QVERIFY(c.localId() == 0); |
|
390 QVERIFY(err == QContactManager::DoesNotExistError); |
|
391 |
|
392 // Retrieve valid existing contact |
|
393 QContactLocalId aid = alice.localId(); |
|
394 c = m_engine->contact(aid, hint, &err); |
|
395 QVERIFY(&c != NULL); |
|
396 QVERIFY(c.localId() == aid); |
|
397 QVERIFY(err == QContactManager::NoError); |
|
398 } |
|
399 |
|
400 void TestSymbianEngine::retrieveContacts() |
|
401 { |
|
402 QContactManager::Error err; |
|
403 QContactFilter f; |
|
404 QContactFilter defaultFilter = QContactFilter(); |
|
405 QContactFetchHint hint = QContactFetchHint(); |
|
406 QList<QContactSortOrder> s; |
|
407 QList<QContactLocalId> cnt_ids; |
|
408 |
|
409 QContact c; |
|
410 c.setType(QContactType::TypeContact); |
|
411 QContactName cn; |
|
412 cn.setFirstName("aaa"); |
|
413 QVERIFY(c.saveDetail(&cn)); |
|
414 |
|
415 QContactPhoneNumber number; |
|
416 number.setContexts("Home"); |
|
417 number.setSubTypes("Mobile"); |
|
418 number.setNumber("12345678"); |
|
419 QVERIFY(c.saveDetail(&number)); |
|
420 QVERIFY(m_engine->saveContact(&c, &err)); |
|
421 QVERIFY(err == QContactManager::NoError); |
|
422 |
|
423 QContact d; |
|
424 d.setType(QContactType::TypeContact); |
|
425 QContactName dn; |
|
426 dn.setFirstName("bbb"); |
|
427 QVERIFY(d.saveDetail(&dn)); |
|
428 QVERIFY(m_engine->saveContact(&d, &err)); |
|
429 QVERIFY(err == QContactManager::NoError); |
|
430 |
|
431 QContact e; |
|
432 e.setType(QContactType::TypeGroup); |
|
433 QContactName en; |
|
434 en.setCustomLabel("ccc"); |
|
435 QVERIFY(e.saveDetail(&en)); |
|
436 QVERIFY(m_engine->saveContact(&e, &err)); |
|
437 QVERIFY(err == QContactManager::NoError); |
|
438 |
|
439 // Retrieve all contacts |
|
440 cnt_ids = m_engine->contactIds(f, s, &err); |
|
441 QVERIFY(err == QContactManager::NoError); |
|
442 QVERIFY(cnt_ids.count() > 0); |
|
443 |
|
444 QContactDetailFilter mobileFilter; |
|
445 mobileFilter.setDetailDefinitionName(QContactPhoneNumber::DefinitionName, QContactPhoneNumber::FieldSubTypes); |
|
446 mobileFilter.setValue(QLatin1String(QContactPhoneNumber::SubTypeMobile)); |
|
447 |
|
448 // Retrieve contacts with mobile number |
|
449 cnt_ids = m_engine->contactIds(mobileFilter, s, &err); |
|
450 QVERIFY(err == QContactManager::NoError); |
|
451 QVERIFY(cnt_ids.count() > 0); |
|
452 |
|
453 // Slow filter |
|
454 QList<QContactLocalId> fast_ids = m_engine->contactIds(mobileFilter, s, &err); |
|
455 QList<QContactLocalId> all_ids = m_engine->contactIds(f, s, &err); |
|
456 QList<QContactLocalId> slow_ids = m_engine->slowFilter(mobileFilter, all_ids, &err); |
|
457 QVERIFY(err == QContactManager::NoError); |
|
458 QVERIFY(slow_ids.count() == fast_ids.count()); |
|
459 |
|
460 QContactDetailFilter invalidFilter; |
|
461 mobileFilter.setDetailDefinitionName("asfdasdf", "asdfasdf"); |
|
462 |
|
463 // Retrieve contacts with invalid filter |
|
464 cnt_ids = m_engine->contactIds(invalidFilter, s, &err); |
|
465 QVERIFY(err == QContactManager::NotSupportedError); |
|
466 |
|
467 // Retrieve sorted contacts |
|
468 QContactSortOrder sortOrder; |
|
469 QList<QContactSortOrder> s1; |
|
470 sortOrder.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldFirstName); |
|
471 sortOrder.setBlankPolicy(QContactSortOrder::BlanksLast); |
|
472 sortOrder.setDirection(Qt::AscendingOrder); |
|
473 sortOrder.setCaseSensitivity(Qt::CaseInsensitive); |
|
474 s1.append(sortOrder); |
|
475 |
|
476 cnt_ids = m_engine->contactIds(defaultFilter, s1, &err); |
|
477 QVERIFY(err == QContactManager::NoError); |
|
478 |
|
479 // Retrieve with invalid sort order |
|
480 QContactSortOrder sortOrder1; |
|
481 QList<QContactSortOrder> s2; |
|
482 sortOrder1.setDetailDefinitionName("asdfasdf", "asdfasd"); |
|
483 |
|
484 cnt_ids = m_engine->contactIds(defaultFilter, s2, &err); |
|
485 QVERIFY(err == QContactManager::NoError); |
|
486 |
|
487 // Retrieve full contacts (with all details) |
|
488 QList<QContact> contactList; |
|
489 QList<QContactSortOrder> sortOrders; |
|
490 QStringList definitionRestrictions; |
|
491 contactList = m_engine->contacts(defaultFilter, sortOrders, hint, &err); |
|
492 QVERIFY(err == QContactManager::NoError); |
|
493 QContactFilter filter; |
|
494 contactList = m_engine->contacts(filter, sortOrders, hint, &err); |
|
495 QVERIFY(err == QContactManager::NoError); |
|
496 } |
|
497 |
|
498 void TestSymbianEngine::retrieveName() |
|
499 { |
|
500 QContactManager::Error err; |
|
501 QContactFetchHint hint = QContactFetchHint(); |
|
502 QStringList hints; |
|
503 hints << QContactDisplayLabel::DefinitionName; |
|
504 hint.setDetailDefinitionsHint(hints); |
|
505 |
|
506 QContact alice; |
|
507 alice.setType(QContactType::TypeContact); |
|
508 QContactName name; |
|
509 name.setFirstName("Alice"); |
|
510 name.setLastName("Wonders"); |
|
511 alice.saveDetail(&name); |
|
512 QVERIFY(m_engine->saveContact(&alice, &err)); |
|
513 QVERIFY(err == QContactManager::NoError); |
|
514 |
|
515 // Retrieve name of "non contact" |
|
516 QContact c = m_engine->contact(0, hint, &err); |
|
517 QVERIFY(&c != NULL); |
|
518 QVERIFY(c.localId() == 0); |
|
519 QVERIFY(err == QContactManager::DoesNotExistError); |
|
520 |
|
521 // Retrieve name of valid existing contact |
|
522 QContactLocalId aid = alice.localId(); |
|
523 c = m_engine->contact(aid, hint, &err); |
|
524 QVERIFY(&c != NULL); |
|
525 QVERIFY(c.localId() == aid); |
|
526 QVERIFY(c.displayLabel() == alice.displayLabel()); |
|
527 QVERIFY(err == QContactManager::NoError); |
|
528 } |
|
529 |
|
530 void TestSymbianEngine::retrieveNames() |
|
531 { |
|
532 QContactManager::Error err; |
|
533 QContactDetailFilter filter; |
|
534 filter.setDetailDefinitionName(QContactType::DefinitionName); |
|
535 filter.setValue(QContactType::TypeContact); |
|
536 |
|
537 QList<QContactSortOrder> sortOrders; |
|
538 |
|
539 QContactFetchHint hint = QContactFetchHint(); |
|
540 QStringList hints; |
|
541 hints << QContactDisplayLabel::DefinitionName; |
|
542 hint.setDetailDefinitionsHint(hints); |
|
543 |
|
544 QContact alice; |
|
545 alice.setType(QContactType::TypeContact); |
|
546 QContactName name; |
|
547 name.setFirstName("Alice"); |
|
548 name.setLastName("Wonders"); |
|
549 alice.saveDetail(&name); |
|
550 QVERIFY(m_engine->saveContact(&alice, &err)); |
|
551 QVERIFY(err == QContactManager::NoError); |
|
552 |
|
553 QContact charlie; |
|
554 charlie.setType(QContactType::TypeContact); |
|
555 name.setFirstName("Charlie"); |
|
556 name.setLastName("Choco"); |
|
557 charlie.saveDetail(&name); |
|
558 QVERIFY(m_engine->saveContact(&charlie, &err)); |
|
559 QVERIFY(err == QContactManager::NoError); |
|
560 |
|
561 int numContacts = m_engine->contactIds(filter, sortOrders, &err).count(); |
|
562 |
|
563 // Retrieve names |
|
564 QList<QContact> contacts = m_engine->contacts(filter, sortOrders, hint, &err); |
|
565 QVERIFY(contacts.count() == numContacts); |
|
566 |
|
567 int verifiedContacts = 0; |
|
568 foreach (QContact contact, contacts) { |
|
569 if (contact.localId() == alice.localId()) { |
|
570 TInt contactId = contact.localId(); |
|
571 TInt aliceId = alice.localId(); |
|
572 QString contactName = contact.displayLabel(); |
|
573 QString aliceName = alice.displayLabel(); |
|
574 QVERIFY(contact.displayLabel() == alice.displayLabel()); |
|
575 ++verifiedContacts; |
|
576 } |
|
577 if (contact.localId() == charlie.localId()) { |
|
578 QVERIFY(contact.displayLabel() == charlie.displayLabel()); |
|
579 ++verifiedContacts; |
|
580 } |
|
581 } |
|
582 |
|
583 QVERIFY(verifiedContacts == 2); |
|
584 } |
|
585 |
|
586 void TestSymbianEngine::updateContact() |
|
587 { |
|
588 QContactManager::Error err; |
|
589 QContactFetchHint hint = QContactFetchHint(); |
|
590 QContact c; |
|
591 |
|
592 QVERIFY(m_engine->saveContact(&c, &err)); |
|
593 QVERIFY(err == QContactManager::NoError); |
|
594 |
|
595 int details_before = c.details().count(); |
|
596 |
|
597 QContactName aliceName; |
|
598 aliceName.setFirstName("Alice"); |
|
599 c.saveDetail(&aliceName); |
|
600 |
|
601 QContactPhoneNumber number; |
|
602 number.setContexts("Home"); |
|
603 number.setSubTypes("Mobile"); |
|
604 number.setNumber("12345678"); |
|
605 c.saveDetail(&number); |
|
606 |
|
607 // update the contact |
|
608 QContactLocalId id = c.localId(); |
|
609 QVERIFY(m_engine->saveContact(&c, &err)); |
|
610 QVERIFY(err == QContactManager::NoError); |
|
611 |
|
612 // Verify that contact has been updated |
|
613 QContact d = m_engine->contact(id, hint, &err); |
|
614 QVERIFY(err == QContactManager::NoError); |
|
615 QVERIFY(d.localId() == id); |
|
616 QVERIFY(d.details().count() > details_before); |
|
617 QString str = d.detail(QContactPhoneNumber::DefinitionName).definitionName(); |
|
618 QVERIFY(str == QContactPhoneNumber::DefinitionName); |
|
619 } |
|
620 |
|
621 void TestSymbianEngine::updateContactByUid() |
|
622 { |
|
623 QContactManager::Error err; |
|
624 QContact c; |
|
625 |
|
626 QVERIFY(m_engine->saveContact(&c, &err)); |
|
627 QVERIFY(err == QContactManager::NoError); |
|
628 QContactLocalId initialId = c.localId(); |
|
629 |
|
630 QContactGuid guidDetail = static_cast<QContactGuid>(c.details(QContactGuid::DefinitionName).at(0)); |
|
631 QString uid = guidDetail.guid(); |
|
632 |
|
633 //clear id |
|
634 QScopedPointer<QContactId> contactId(new QContactId()); |
|
635 contactId->setLocalId(0); |
|
636 contactId->setManagerUri(QString()); |
|
637 c.setId(*contactId); |
|
638 |
|
639 // update the contact |
|
640 QContactName aliceName; |
|
641 aliceName.setFirstName("Alice"); |
|
642 c.saveDetail(&aliceName); |
|
643 QContactPhoneNumber number; |
|
644 number.setContexts("Home"); |
|
645 number.setSubTypes("Mobile"); |
|
646 number.setNumber("12345678"); |
|
647 c.saveDetail(&number); |
|
648 |
|
649 //verify that the same contact was updated |
|
650 QVERIFY(m_engine->saveContact(&c, &err)); |
|
651 QContactLocalId id = c.localId(); |
|
652 QVERIFY(err == QContactManager::NoError); |
|
653 QVERIFY(initialId == id); |
|
654 } |
|
655 |
|
656 void TestSymbianEngine::removeContact() |
|
657 { |
|
658 QContactManager::Error err; |
|
659 QContactFetchHint hint = QContactFetchHint(); |
|
660 |
|
661 QContact c; |
|
662 c.setType(QContactType::TypeContact); |
|
663 QVERIFY(m_engine->saveContact(&c, &err)); |
|
664 QVERIFY(err == QContactManager::NoError); |
|
665 |
|
666 // Remove existing contact |
|
667 QContactLocalId id = c.localId(); |
|
668 QVERIFY(m_engine->removeContact(id, &err)); |
|
669 QVERIFY(err == QContactManager::NoError); |
|
670 |
|
671 // Verify that contact has been removed |
|
672 QContact f = m_engine->contact(id, hint, &err); |
|
673 QVERIFY(f.localId() == 0); |
|
674 QVERIFY(err == QContactManager::DoesNotExistError); |
|
675 |
|
676 // Remove non existent contact |
|
677 QVERIFY(!m_engine->removeContact(0, &err)); |
|
678 QVERIFY(err == QContactManager::DoesNotExistError); |
|
679 } |
|
680 |
|
681 void TestSymbianEngine::removeContacts() |
|
682 { |
|
683 QContactManager::Error err; |
|
684 QContactFetchHint hint = QContactFetchHint(); |
|
685 QList<QContactLocalId> contacts; |
|
686 int count = 5; |
|
687 |
|
688 // Remove non existent contacts |
|
689 QMap<int, QContactManager::Error> errorMap; |
|
690 QVERIFY(!m_engine->removeContacts(contacts, &errorMap, &err)); |
|
691 QVERIFY(err == QContactManager::BadArgumentError); |
|
692 QVERIFY(errorMap.count() == 0); |
|
693 |
|
694 // Remove existing contacts |
|
695 for(int i=0; i<count; i++) { |
|
696 QContact c; |
|
697 c.setType(QContactType::TypeContact); |
|
698 QVERIFY(m_engine->saveContact(&c, &err)); |
|
699 QVERIFY(err == QContactManager::NoError); |
|
700 contacts.append(c.localId()); |
|
701 } |
|
702 QVERIFY(m_engine->removeContacts(contacts, &errorMap, &err)); |
|
703 QVERIFY(err == QContactManager::NoError); |
|
704 foreach(QContactManager::Error e, errorMap) { |
|
705 QVERIFY(e == QContactManager::NoError); |
|
706 } |
|
707 |
|
708 // Verify that contacts have been removed |
|
709 for(int i=0; i<contacts.count(); i++) { |
|
710 QContact f = m_engine->contact(contacts[i], hint, &err); |
|
711 QVERIFY(f.localId() == 0); |
|
712 QVERIFY(err == QContactManager::DoesNotExistError); |
|
713 } |
|
714 |
|
715 // Remove a list with one non existent contact |
|
716 contacts.clear(); |
|
717 for(int i=0; i<count; i++) { |
|
718 QContact c; |
|
719 c.setType(QContactType::TypeContact); |
|
720 QVERIFY(m_engine->saveContact(&c, &err)); |
|
721 QVERIFY(err == QContactManager::NoError); |
|
722 contacts.append(c.localId()); |
|
723 } |
|
724 contacts.insert(3, 0); |
|
725 |
|
726 QVERIFY(!m_engine->removeContacts(contacts, &errorMap, &err)); |
|
727 QVERIFY(err == QContactManager::DoesNotExistError); |
|
728 foreach(QContactManager::Error e, errorMap) { |
|
729 QVERIFY(e == QContactManager::DoesNotExistError); |
|
730 } |
|
731 |
|
732 for(int i=0; i<contacts.count(); i++) { |
|
733 QContact f = m_engine->contact(contacts[i], hint, &err); |
|
734 QVERIFY(f.localId() == 0); |
|
735 QVERIFY(err == QContactManager::DoesNotExistError); |
|
736 } |
|
737 } |
|
738 |
|
739 void TestSymbianEngine::addOwnCard() |
|
740 { |
|
741 QContactManager::Error err; |
|
742 |
|
743 // Create a new contact own card |
|
744 QContact own; |
|
745 QContactName ownName; |
|
746 ownName.setFirstName("Own"); |
|
747 own.saveDetail(&ownName); |
|
748 QVERIFY(m_engine->saveContact(&own, &err)); |
|
749 QVERIFY(err == QContactManager::NoError); |
|
750 |
|
751 // Set a non existent contact as own card and verify |
|
752 // ensure this contact does not exist in dbase |
|
753 QContactLocalId id(12); |
|
754 m_engine->removeContact(id, &err); // Don't test err. May or may not be in dbase |
|
755 QVERIFY(!m_engine->setSelfContactId(id, &err)); // does not exist |
|
756 QVERIFY(err == QContactManager::DoesNotExistError); |
|
757 |
|
758 // Test a "0" contact id |
|
759 QVERIFY(!m_engine->setSelfContactId(0, &err)); // Bad argument |
|
760 QVERIFY(err == QContactManager::BadArgumentError); |
|
761 |
|
762 // Set an existent contact as own card |
|
763 QVERIFY(m_engine->setSelfContactId(own.localId(), &err)); |
|
764 QVERIFY(err == QContactManager::NoError); |
|
765 } |
|
766 |
|
767 void TestSymbianEngine::retrieveOwnCard() |
|
768 { |
|
769 QContactManager::Error err; |
|
770 |
|
771 // Create a new contact own card |
|
772 QContact own; |
|
773 QContactName ownName; |
|
774 ownName.setFirstName("Own"); |
|
775 own.saveDetail(&ownName); |
|
776 QVERIFY(m_engine->saveContact(&own, &err)); |
|
777 QVERIFY(err == QContactManager::NoError); |
|
778 QVERIFY(m_engine->setSelfContactId(own.localId(), &err)); |
|
779 QVERIFY(err == QContactManager::NoError); |
|
780 |
|
781 // Fetch existing self contact |
|
782 QContactLocalId own_id = m_engine->selfContactId(&err); |
|
783 QVERIFY(err == QContactManager::NoError); |
|
784 QVERIFY(own_id == own.localId()); |
|
785 |
|
786 // Remove self contact and verify |
|
787 QVERIFY(m_engine->removeContact(own.localId(), &err)); |
|
788 QContactLocalId idr = m_engine->selfContactId(&err); |
|
789 QVERIFY(err == QContactManager::DoesNotExistError); |
|
790 QVERIFY(idr == 0); |
|
791 } |
|
792 |
|
793 void TestSymbianEngine::filterSupport() |
|
794 { |
|
795 // Filter feature support |
|
796 QContactDetailFilter df; |
|
797 df.setDetailDefinitionName(QContactPhoneNumber::DefinitionName, QContactPhoneNumber::FieldSubTypes); |
|
798 QVERIFY(m_engine->isFilterSupported(df)); |
|
799 QContactFilter f; |
|
800 QVERIFY(m_engine->isFilterSupported(f)); |
|
801 } |
|
802 |
|
803 void TestSymbianEngine::featureSupport() |
|
804 { |
|
805 //hasFeature(QContactManager::ManagerFeature feature, const QString& contactType) |
|
806 |
|
807 // test with illegal feature enum value |
|
808 const int illegalFeature(198); |
|
809 QContactManager::ManagerFeature f = static_cast<QContactManager::ManagerFeature>(illegalFeature); |
|
810 QVERIFY(!m_engine->hasFeature(f, QContactType::TypeContact)); |
|
811 QVERIFY(!m_engine->hasFeature(f, QContactType::TypeGroup)); |
|
812 |
|
813 // empty contact type param |
|
814 QVERIFY(!m_engine->hasFeature(QContactManager::Groups, "")); |
|
815 QVERIFY(!m_engine->hasFeature(QContactManager::ActionPreferences, "")); |
|
816 QVERIFY(!m_engine->hasFeature(QContactManager::MutableDefinitions, "")); |
|
817 QVERIFY(!m_engine->hasFeature(QContactManager::Relationships, "")); |
|
818 QVERIFY(!m_engine->hasFeature(QContactManager::ArbitraryRelationshipTypes, "")); |
|
819 QVERIFY(!m_engine->hasFeature(QContactManager::SelfContact, "")); |
|
820 QVERIFY(!m_engine->hasFeature(QContactManager::Anonymous, "")); |
|
821 QVERIFY(!m_engine->hasFeature(QContactManager::ChangeLogs, "")); |
|
822 |
|
823 // wrong contact type param |
|
824 QVERIFY(!m_engine->hasFeature(QContactManager::Groups, "aserasdf")); |
|
825 QVERIFY(!m_engine->hasFeature(QContactManager::ActionPreferences, "aserasdf")); |
|
826 QVERIFY(!m_engine->hasFeature(QContactManager::MutableDefinitions, "aserasdf")); |
|
827 QVERIFY(!m_engine->hasFeature(QContactManager::Relationships, "aserasdf")); |
|
828 QVERIFY(!m_engine->hasFeature(QContactManager::ArbitraryRelationshipTypes, "aserasdf")); |
|
829 QVERIFY(!m_engine->hasFeature(QContactManager::SelfContact, "aserasdf")); |
|
830 QVERIFY(!m_engine->hasFeature(QContactManager::Anonymous, "aserasdf")); |
|
831 QVERIFY(!m_engine->hasFeature(QContactManager::ChangeLogs, "aserasdf")); |
|
832 |
|
833 // TypeContact contact type param |
|
834 QVERIFY(m_engine->hasFeature(QContactManager::Groups, QContactType::TypeContact)); |
|
835 QVERIFY(!m_engine->hasFeature(QContactManager::ActionPreferences, QContactType::TypeContact)); |
|
836 QVERIFY(!m_engine->hasFeature(QContactManager::MutableDefinitions, QContactType::TypeContact)); |
|
837 QVERIFY(m_engine->hasFeature(QContactManager::Relationships, QContactType::TypeContact)); |
|
838 QVERIFY(!m_engine->hasFeature(QContactManager::ArbitraryRelationshipTypes, QContactType::TypeContact)); |
|
839 QVERIFY(m_engine->hasFeature(QContactManager::SelfContact, QContactType::TypeContact)); |
|
840 QVERIFY(!m_engine->hasFeature(QContactManager::Anonymous, QContactType::TypeContact)); |
|
841 QVERIFY(!m_engine->hasFeature(QContactManager::ChangeLogs, QContactType::TypeContact)); |
|
842 |
|
843 // TypeGroup contact type param |
|
844 QVERIFY(m_engine->hasFeature(QContactManager::Groups, QContactType::TypeGroup)); |
|
845 QVERIFY(!m_engine->hasFeature(QContactManager::ActionPreferences, QContactType::TypeGroup)); |
|
846 QVERIFY(!m_engine->hasFeature(QContactManager::MutableDefinitions, QContactType::TypeGroup)); |
|
847 QVERIFY(m_engine->hasFeature(QContactManager::Relationships, QContactType::TypeGroup)); |
|
848 QVERIFY(!m_engine->hasFeature(QContactManager::ArbitraryRelationshipTypes, QContactType::TypeGroup)); |
|
849 QVERIFY(m_engine->hasFeature(QContactManager::SelfContact, QContactType::TypeGroup)); |
|
850 QVERIFY(!m_engine->hasFeature(QContactManager::Anonymous, QContactType::TypeGroup)); |
|
851 QVERIFY(!m_engine->hasFeature(QContactManager::ChangeLogs, QContactType::TypeContact)); |
|
852 } |
|
853 |
|
854 void TestSymbianEngine::addGroup() |
|
855 { |
|
856 QContactManager::Error err = QContactManager::NoError; |
|
857 QContactId empty; |
|
858 |
|
859 // Add valid group contact |
|
860 QContact g; |
|
861 g.setType(QContactType::TypeGroup); |
|
862 |
|
863 QVERIFY(m_engine->saveContact(&g, &err)); |
|
864 QVERIFY(err == QContactManager::NoError); |
|
865 QVERIFY(g.id() != empty); |
|
866 QVERIFY(g.localId() != 0); |
|
867 QString uri = QString(QLatin1String(CNT_SYMBIAN_MANAGER_NAME)); |
|
868 QVERIFY(g.id().managerUri().contains(uri, Qt::CaseInsensitive)); |
|
869 |
|
870 // Add invalid group contact |
|
871 QContact g1; |
|
872 g1.setType("Jargon"); |
|
873 |
|
874 QVERIFY(!m_engine->saveContact(&g1, &err)); |
|
875 QVERIFY(err == QContactManager::InvalidDetailError); |
|
876 QVERIFY(g1.id() == empty); |
|
877 QVERIFY(g1.localId() == 0); |
|
878 } |
|
879 |
|
880 void TestSymbianEngine::retrieveGroup() |
|
881 { |
|
882 QContactManager::Error err; |
|
883 QList<QContactSortOrder> s; |
|
884 |
|
885 // retrieve group contacts |
|
886 QContactDetailFilter filter; |
|
887 filter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType); |
|
888 filter.setValue(QString(QLatin1String(QContactType::TypeGroup))); |
|
889 |
|
890 QList<QContactLocalId> grp_ids = m_engine->contactIds(filter, s, &err); |
|
891 QVERIFY(err == QContactManager::NoError); |
|
892 QVERIFY(err == QContactManager::NoError); |
|
893 |
|
894 QContact g; |
|
895 g.setType(QContactType::TypeGroup); |
|
896 QVERIFY(m_engine->saveContact(&g, &err)); |
|
897 QVERIFY(err == QContactManager::NoError); |
|
898 |
|
899 QList<QContactLocalId> grp_ids1 = m_engine->contactIds(filter, s, &err); |
|
900 QVERIFY(err == QContactManager::NoError); |
|
901 QVERIFY(grp_ids.count() + 1 == grp_ids1.count()); |
|
902 |
|
903 } |
|
904 |
|
905 void TestSymbianEngine::singleRelationship() |
|
906 { |
|
907 // More relationships logic is tested in relationship unit tests. |
|
908 // We do simple tests here |
|
909 QContactManager::Error error; |
|
910 |
|
911 QContact a; |
|
912 QVERIFY(m_engine->saveContact(&a, &error)); |
|
913 QContact b; |
|
914 QVERIFY(m_engine->saveContact(&b, &error)); |
|
915 |
|
916 QContactRelationship rel; |
|
917 rel.setFirst(a.id()); |
|
918 rel.setSecond(b.id()); |
|
919 rel.setRelationshipType(QContactRelationship::HasSpouse); |
|
920 |
|
921 // Add relationship |
|
922 m_engine->saveRelationship(&rel, &error); |
|
923 bool isValid(false); |
|
924 if (error == QContactManager::NoError || |
|
925 error == QContactManager::NotSupportedError) |
|
926 isValid = true; |
|
927 |
|
928 QVERIFY(isValid); |
|
929 |
|
930 // Remove relationship |
|
931 m_engine->removeRelationship(rel, &error); |
|
932 if (error == QContactManager::NoError || |
|
933 error == QContactManager::NotSupportedError) |
|
934 isValid = true; |
|
935 else |
|
936 isValid = false; |
|
937 QVERIFY(isValid); |
|
938 |
|
939 // TODO: replacement? |
|
940 /*QStringList supportedRelationships = |
|
941 m_engine->supportedRelationshipTypes(QContactType::TypeGroup); |
|
942 QVERIFY(supportedRelationships.contains(QContactRelationship::HasMember)); |
|
943 */ |
|
944 } |
|
945 |
|
946 void TestSymbianEngine::batchRelationships() |
|
947 { |
|
948 // More relationships logic is tested somewhere else. |
|
949 // We do simple tests here |
|
950 QContactManager::Error error; |
|
951 |
|
952 QContact a; |
|
953 QVERIFY(m_engine->saveContact(&a, &error)); |
|
954 QContact b; |
|
955 QVERIFY(m_engine->saveContact(&b, &error)); |
|
956 |
|
957 QContactRelationship rel; |
|
958 rel.setFirst(a.id()); |
|
959 rel.setSecond(b.id()); |
|
960 rel.setRelationshipType(QContactRelationship::HasSpouse); |
|
961 |
|
962 QList<QContactRelationship> list; |
|
963 list.append(rel); |
|
964 bool isValid(false); |
|
965 |
|
966 // Add relationships |
|
967 QMap<int, QContactManager::Error> errorMap; |
|
968 QVERIFY(!m_engine->saveRelationships(&list, &errorMap, &error)); |
|
969 foreach(QContactManager::Error err, errorMap) { |
|
970 if (err == QContactManager::NoError || |
|
971 err == QContactManager::NotSupportedError) |
|
972 isValid = true; |
|
973 else |
|
974 isValid = false; |
|
975 QVERIFY(isValid); |
|
976 } |
|
977 |
|
978 // fetch relationships |
|
979 QContactRelationship::Role role; |
|
980 role = QContactRelationship::First; |
|
981 list.clear(); |
|
982 list = m_engine->relationships(QContactRelationship::HasSpouse, a.id(), role, &error); |
|
983 QVERIFY(&list != NULL); |
|
984 if (error == QContactManager::NoError || |
|
985 error == QContactManager::NotSupportedError) |
|
986 isValid = true; |
|
987 else |
|
988 isValid = false; |
|
989 QVERIFY(isValid); |
|
990 |
|
991 // Remove relationships |
|
992 QVERIFY(m_engine->removeRelationships(list, &errorMap, &error)); |
|
993 foreach(QContactManager::Error err, errorMap) { |
|
994 if (err == QContactManager::NoError || |
|
995 err == QContactManager::NotSupportedError) |
|
996 isValid = true; |
|
997 else |
|
998 isValid = false; |
|
999 QVERIFY(isValid); |
|
1000 } |
|
1001 } |
|
1002 |
|
1003 void TestSymbianEngine::dataTypeSupport() |
|
1004 { |
|
1005 QList<QVariant::Type> support = m_engine->supportedDataTypes(); |
|
1006 QVERIFY(support.contains(QVariant::String)); |
|
1007 } |
|
1008 |
|
1009 void TestSymbianEngine::synthesizeDisplaylable() |
|
1010 { |
|
1011 QContactManager::Error err = QContactManager::NoError; |
|
1012 |
|
1013 QContact empty; |
|
1014 QString label = m_engine->synthesizedDisplayLabel(empty, &err); |
|
1015 QVERIFY(err == QContactManager::NoError); |
|
1016 QVERIFY(label.isEmpty()); |
|
1017 |
|
1018 QContact first; |
|
1019 QContactName fn; |
|
1020 fn.setFirstName("Alice"); |
|
1021 first.saveDetail(&fn); |
|
1022 label = m_engine->synthesizedDisplayLabel(first, &err); |
|
1023 QVERIFY(err == QContactManager::NoError); |
|
1024 QVERIFY(label == QString("Alice")); |
|
1025 |
|
1026 QContact last; |
|
1027 QContactName ln; |
|
1028 ln.setLastName("Jones"); |
|
1029 last.saveDetail(&ln); |
|
1030 label = m_engine->synthesizedDisplayLabel(last, &err); |
|
1031 QVERIFY(err == QContactManager::NoError); |
|
1032 QVERIFY(label == QString("Jones")); |
|
1033 |
|
1034 QContact orgContact; |
|
1035 QContactOrganization org; |
|
1036 org.setName("Nokia"); |
|
1037 org.setDepartment(QStringList("Services")); |
|
1038 org.setTitle("Assistant Manager"); |
|
1039 org.setLocation("Nokia Cyber Park"); |
|
1040 orgContact.saveDetail(&org); |
|
1041 label = m_engine->synthesizedDisplayLabel(orgContact, &err); |
|
1042 QVERIFY(err == QContactManager::NoError); |
|
1043 QVERIFY(label == QString("Nokia")); |
|
1044 |
|
1045 QContact jargon; |
|
1046 jargon.setType("jargon"); |
|
1047 label = m_engine->synthesizedDisplayLabel(jargon, &err); |
|
1048 QVERIFY(err == QContactManager::InvalidContactTypeError); |
|
1049 QVERIFY(label.isEmpty()); |
|
1050 |
|
1051 QContact group; |
|
1052 group.setType(QContactType::TypeGroup); |
|
1053 QContactName gn; |
|
1054 gn.setCustomLabel("grouplable"); |
|
1055 group.saveDetail(&gn); |
|
1056 label = m_engine->synthesizedDisplayLabel(group, &err); |
|
1057 QVERIFY(err == QContactManager::NoError); |
|
1058 QVERIFY(label == QString("grouplable")); |
|
1059 } |
|
1060 |
|
1061 void TestSymbianEngine::definitionDetails() |
|
1062 { |
|
1063 QMap<QString, QContactDetailDefinition> defs; |
|
1064 QContactManager::Error err; |
|
1065 |
|
1066 // Wrong contact type |
|
1067 defs = m_engine->detailDefinitions("aerafa", &err); |
|
1068 QVERIFY(err = QContactManager::InvalidContactTypeError); |
|
1069 QVERIFY(defs.count() == 0); |
|
1070 |
|
1071 // Valid defs |
|
1072 defs = m_engine->detailDefinitions(QContactType::TypeContact, &err); |
|
1073 QVERIFY(err == QContactManager::NoError); |
|
1074 defs = m_engine->detailDefinitions(QContactType::TypeGroup, &err); |
|
1075 QVERIFY(err == QContactManager::NoError); |
|
1076 } |
|
1077 |
|
1078 void TestSymbianEngine::asyncRequests() |
|
1079 { |
|
1080 //create a contact |
|
1081 QContactManager::Error err; |
|
1082 QContact dummy; |
|
1083 dummy.setType(QContactType::TypeContact); |
|
1084 QContactName name; |
|
1085 name.setFirstName("dummy"); |
|
1086 dummy.saveDetail(&name); |
|
1087 QVERIFY(m_engine->saveContact(&dummy, &err)); |
|
1088 QVERIFY(err == QContactManager::NoError); |
|
1089 |
|
1090 //create a group with members |
|
1091 QContact groupContact; |
|
1092 groupContact.setType(QContactType::TypeGroup); |
|
1093 m_engine->saveContact(&groupContact, &err); |
|
1094 QVERIFY(err == QContactManager::NoError); |
|
1095 QContactRelationship relationship; |
|
1096 relationship.setRelationshipType(QContactRelationship::HasMember); |
|
1097 relationship.setFirst(groupContact.id()); |
|
1098 relationship.setSecond(dummy.id()); |
|
1099 bool returnValue(false); |
|
1100 returnValue = m_engine->saveRelationship(&relationship, &err); |
|
1101 QVERIFY(returnValue == true); |
|
1102 QVERIFY(err == QContactManager::NoError); |
|
1103 |
|
1104 //fetch request |
|
1105 QContactFetchRequest fetch; |
|
1106 QVERIFY(m_engine->startRequest(&fetch)); |
|
1107 QTest::qWait(1000); //1sec |
|
1108 QVERIFY(fetch.error() == QContactManager::NoError); |
|
1109 QVERIFY(fetch.state() == QContactFetchRequest::FinishedState); |
|
1110 QVERIFY(fetch.contacts().count() > 0); |
|
1111 |
|
1112 //fetch ids request |
|
1113 QContactLocalIdFetchRequest fetchIds; |
|
1114 QVERIFY(m_engine->startRequest(&fetchIds)); |
|
1115 QTest::qWait(1000); //1sec |
|
1116 QVERIFY(fetchIds.error() == QContactManager::NoError); |
|
1117 QVERIFY(fetchIds.state() == QContactFetchRequest::FinishedState); |
|
1118 QVERIFY(fetchIds.ids().count() > 0); |
|
1119 |
|
1120 //save request |
|
1121 QContactSaveRequest saveReq; |
|
1122 QContact c; |
|
1123 c.setType(QContactType::TypeContact); |
|
1124 QList<QContact> contactList; |
|
1125 contactList += c; |
|
1126 saveReq.setContacts(contactList); |
|
1127 QVERIFY(m_engine->startRequest(&saveReq)); |
|
1128 QTest::qWait(1000); //1sec |
|
1129 QVERIFY(saveReq.error() == QContactManager::NoError); |
|
1130 QVERIFY(saveReq.state() == QContactFetchRequest::FinishedState); |
|
1131 QVERIFY(saveReq.contacts().count() > 0); |
|
1132 |
|
1133 //remove request |
|
1134 QContactRemoveRequest removeReq; |
|
1135 QList<QContactLocalId> idList; |
|
1136 idList += saveReq.contacts().at(0).localId(); |
|
1137 removeReq.setContactIds(idList); |
|
1138 QVERIFY(m_engine->startRequest(&removeReq)); |
|
1139 QTest::qWait(1000); //1sec |
|
1140 int err_temp = removeReq.error(); |
|
1141 QVERIFY(removeReq.error() == QContactManager::NoError); |
|
1142 QVERIFY(removeReq.state() == QContactFetchRequest::FinishedState); |
|
1143 |
|
1144 //detail definition request |
|
1145 QContactDetailDefinitionFetchRequest detDefReq; |
|
1146 detDefReq.setContactType(QContactType::TypeContact); |
|
1147 QStringList defList; |
|
1148 defList += QContactName::DefinitionName; |
|
1149 detDefReq.setDefinitionNames(defList); |
|
1150 QVERIFY(m_engine->startRequest(&detDefReq)); |
|
1151 QTest::qWait(1000); //1sec |
|
1152 QVERIFY(detDefReq.error() == QContactManager::NoError); |
|
1153 QVERIFY(detDefReq.state() == QContactFetchRequest::FinishedState); |
|
1154 |
|
1155 //relationship fetch request |
|
1156 QContactRelationshipFetchRequest relFetchReq; |
|
1157 relFetchReq.setFirst(groupContact.id()); |
|
1158 relFetchReq.setSecond(dummy.id()); |
|
1159 relFetchReq.setRelationshipType(QContactRelationship::HasMember); |
|
1160 QVERIFY(m_engine->startRequest(&relFetchReq)); |
|
1161 QTest::qWait(1000); //1sec |
|
1162 QVERIFY(relFetchReq.error() == QContactManager::NoError); |
|
1163 QVERIFY(relFetchReq.state() == QContactFetchRequest::FinishedState); |
|
1164 QVERIFY(relFetchReq.relationships().count() > 0); |
|
1165 |
|
1166 //relationship remove request |
|
1167 QContactRelationshipRemoveRequest relRemoveReq; |
|
1168 QList<QContactRelationship> relList; |
|
1169 relList += relationship; |
|
1170 relRemoveReq.setRelationships(relList); |
|
1171 QVERIFY(m_engine->startRequest(&relRemoveReq)); |
|
1172 QTest::qWait(1000); //1sec |
|
1173 QVERIFY(relRemoveReq.error() == QContactManager::NoError); |
|
1174 QVERIFY(relRemoveReq.state() == QContactFetchRequest::FinishedState); |
|
1175 |
|
1176 //relationship save request |
|
1177 QContactRelationshipSaveRequest relSaveReq; |
|
1178 relSaveReq.setRelationships(relList); |
|
1179 QVERIFY(m_engine->startRequest(&relSaveReq)); |
|
1180 QTest::qWait(1000); //1sec |
|
1181 QVERIFY(relSaveReq.error() == QContactManager::NoError); |
|
1182 QVERIFY(relSaveReq.state() == QContactFetchRequest::FinishedState); |
|
1183 |
|
1184 //cancel request |
|
1185 QVERIFY(m_engine->startRequest(&relRemoveReq)); |
|
1186 m_engine->cancelRequest(&relRemoveReq); |
|
1187 QTest::qWait(1000); //1sec |
|
1188 QVERIFY(relRemoveReq.error() == QContactManager::NoError); |
|
1189 QVERIFY(relRemoveReq.state() == QContactFetchRequest::CanceledState); |
|
1190 |
|
1191 //wait for a request finish |
|
1192 QVERIFY(!m_engine->waitForRequestFinished(&relSaveReq, 1000)); |
|
1193 QVERIFY(m_engine->startRequest(&relRemoveReq)); |
|
1194 QVERIFY(m_engine->waitForRequestFinished(&relRemoveReq, 1000)); |
|
1195 QTest::qWait(1000); //1sec |
|
1196 QVERIFY(relRemoveReq.error() == QContactManager::NoError); |
|
1197 QVERIFY(relRemoveReq.state() == QContactFetchRequest::FinishedState); |
|
1198 |
|
1199 //destroy request |
|
1200 QVERIFY(m_engine->startRequest(&relRemoveReq)); |
|
1201 m_engine->requestDestroyed(&relRemoveReq); |
|
1202 QVERIFY(!m_engine->m_asynchronousOperations.contains(&relRemoveReq)); |
|
1203 } |