WIP: contactmerging - initial unit test and skeleton for ContactMergeRequest
[qtcontacts-tracker:qtcontacts-tracker.git] / tests / ut_qtcontacts_trackerplugin / ut_qtcontacts_trackerplugin.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2009 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 #ifndef UT_QTCONTACTS_TRACKERPLUGIN_H
43 #define UT_QTCONTACTS_TRACKERPLUGIN_H
44
45 #include "ut_qtcontacts_trackerplugin_common.h"
46 #include "qcontacttrackerengineemulatedv2.h"
47
48
49 // FIXME: This type name doesn't fit anything!!!
50 struct editStruct;
51
52 /**
53  * QtContacts Tracker plugin unittests
54  */
55 class ut_qtcontacts_trackerplugin : public ut_qtcontacts_trackerplugin_common
56 {
57     Q_OBJECT;
58
59 public:
60     ut_qtcontacts_trackerplugin(QObject *parent = 0);
61
62 private slots:
63     void initTestCase();
64     void cleanupTestCase();
65     void cleanup();
66
67     void testFetchAll();
68
69     void testSaveNothing();
70     void testSavePhoneNumber_data();
71     void testSavePhoneNumber();
72     void testPhoneNumberContext();
73     void testWritingOnlyWorkMobile();
74     void testContacts();
75     void testContact();
76     void testAvatar();
77     void testOnlineAvatar_data();
78     void testOnlineAvatar();
79     void testDateDetail_data();
80     void testDateDetail();
81
82     void testSaveEmailAddress();
83     void testSaveFullname();
84     void testSaveName();
85     void testSaveNameUnique();
86     void testSaveAddress();
87     void testSaveOrganization();
88     void testSaveCustomValues();
89
90     void testRemoveContact();
91     void testSaveContacts();
92     void testRemoveContacts();
93     void testUrl();
94     void testOrganization();
95     void testUniqueDetails_data();
96     void testUniqueDetails();
97     void testCustomDetails();
98
99     void testRemoveSubType_data();
100     void testRemoveSubType();
101     void testTags();
102
103 //    void testGroups();
104 //    void testGroup();
105 //    void testSaveGroup();
106 //    void testRemoveGroup();
107 //    void testDetailDefinitions();
108 //    void testDetailDefinition();
109 //    void testSaveDetailDefinition();
110 //    void testRemoveDetailDefinition();
111     void testSyncContactManagerContactsAddedSince();
112     void testSyncTrackerEngineContactsIdsAddedSince();
113     void testSyncContactManagerContactIdsAddedSince();
114     void testContactsAddedSince();
115     void testContactsModifiedSince();
116     void testContactsRemovedSince();
117 //    void testGroupsAddedSince();
118 //    void testGroupsModifiedSince();
119 //    void testGroupsRemovedSince();
120     void testNcoTypes();
121     void testClassHierarchy();
122     void testMergeTwoOnlineContacts();
123     void testMergingContacts();
124     void testAsyncReadContacts();
125
126     void testSortContacts();
127
128     void testFilterContacts();
129     void testFilterContactsEndsWithAndPhoneNumber();
130 // NB#208065
131     void testFilterContactsMatchPhoneNumberWithShortNumber_data();
132     void testFilterContactsMatchPhoneNumberWithShortNumber();
133 // end NB#208065
134     void testFilterTwoNameFields();
135     void testLocalIdFilterManyIds_data();
136     void testLocalIdFilterManyIds();
137     void testContactFilter_data();
138     void testContactFilter();
139     void testFilterOnContainsSubTypesByClass();
140     void testFilterOnSubTypesByProperty();
141     void testFilterOnContainsSubTypesByNaoProperty();
142     void testFilterOnContactType();
143
144     void testIMContactsAndMetacontactMasterPresence();
145     void testIMContactsFiltering();
146     void testContactsWithoutMeContact();
147     void testDefinitionNames();
148     void testMeContact();
149
150     void testDisplayLabelSynthesized();
151     void testDisplayLabelFetchDefault();
152     void testDisplayLabelFetchWithHints();
153     void testDisplayLabelSynthesizedWithNameOrders_data();
154     void testDisplayLabelSynthesizedWithNameOrders();
155
156     void testSyncTarget_data();
157     void testSyncTarget();
158
159 // NB#161788 and its dependant bugs
160     void testEditCombinations_email();
161     void testEditCombinations_url();
162     void testEditCombinations_address();
163     void testEditCombinations_phone();
164 // end NB#161788
165
166 // NB#173388
167     void testSaveThumbnail_data();
168     void testSaveThumbnail();
169 // end NB#173388
170
171     void testVCardsAndSync_data();
172     void testVCardsAndSync();
173     void testCreateUuid();
174     void testPreserveUID();
175     void testSignals();
176
177     void testFuzzing_data();
178     void testFuzzing();
179
180     void testUnionFilterUniqueness();
181     void testPartialSave_data();
182     void testPartialSave();
183
184 private:
185     // FIXME: Most of the following methods are editStruct methods!!!
186     void setName(editStruct &es, QString first = QString(), QString last = QString());
187     void setEmail(editStruct &es, QString email, QString context = QString());
188     void setUrl(editStruct &es, QString url, QString context = QString(), QString subType = QString());
189     void setPhone(editStruct &es, QString phone, QString context = QString(), QString subType = QString());
190     void setAddress(editStruct &es, QString street, QString postcode = QString(), QString pobox = QString(), QString locality = QString(), QString region = QString(), QString country = QString(), QString context = QString(), QString subType = QString());
191     void saveEditsToContact(editStruct &es, QContact &c);
192
193     void verifyEdits(QContact &verify, editStruct &es);
194     void runEditList(QList<editStruct> &editList);
195
196     void syncContactsAddedSinceHelper(QDateTime& start, QList<QContactLocalId>& addedIds);
197
198     void insertContact(const QString& contactURI, QContactLocalId uid, QString imId, QString imStatus, QString accountPath, QString protocol = "jabber");
199     void updateIMContactStatus(const QString& uri, QString imStatus);
200     QContact contact(QContactLocalId uid, QStringList detailsToLoad = QStringList());
201     QList<QContact> contacts(QList<QContactLocalId> uids, QStringList detailsToLoad = QStringList());
202
203     void testDisplayLabelFetch(const QStringList &definitionHints);
204     QContactTrackerEngineEmulatedV2 *emulatedV2Engine();
205     void fuzzContact(QContact &result) const;
206     void fuzzDetailType(QList<QContactDetail> &result, const QString &definitionName) const;
207
208 private:
209     QList<QContactLocalId> addedContacts;
210     QContactTrackerEngineEmulatedV2 *m_emulatedV2Engine;
211 };
212
213
214 #endif