New: ut_qtcontacts_trackerplugin::testSaveNothing()
[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
47 // FIXME: This type name doesn't fit anything!!!
48 struct editStruct;
49
50 /**
51  * QtContacts Tracker plugin unittests
52  */
53 class ut_qtcontacts_trackerplugin : public ut_qtcontacts_trackerplugin_common
54 {
55     Q_OBJECT;
56
57 public:
58     ut_qtcontacts_trackerplugin(QObject *parent = 0);
59
60 private slots:
61     void initTestCase();
62     void cleanupTestCase();
63     void cleanup();
64
65     void testSaveNothing();
66     void testSavePhoneNumber_data();
67     void testSavePhoneNumber();
68     void testPhoneNumberContext();
69     void testWritingOnlyWorkMobile();
70     void testContacts();
71     void testContact();
72     void testAvatar();
73
74     void testSaveEmailAddress();
75     void testSaveFullname();
76     void testSaveName();
77     void testSaveNameUnique();
78     void testSaveAddress();
79     void testSaveOrganization();
80
81     void testRemoveContact();
82     void testSaveContacts();
83     void testRemoveContacts();
84     void testUrl();
85     void testOrganization();
86     void testUniqueDetails_data();
87     void testUniqueDetails();
88     void testCustomDetails();
89
90     void testRemoveSubType_data();
91     void testRemoveSubType();
92     void testTags();
93
94 //    void testGroups();
95 //    void testGroup();
96 //    void testSaveGroup();
97 //    void testRemoveGroup();
98 //    void testDetailDefinitions();
99 //    void testDetailDefinition();
100 //    void testSaveDetailDefinition();
101 //    void testRemoveDetailDefinition();
102     void testSyncContactManagerContactsAddedSince();
103     void testSyncTrackerEngineContactsIdsAddedSince();
104     void testSyncContactManagerContactIdsAddedSince();
105     void testContactsAddedSince();
106     void testContactsModifiedSince();
107     void testContactsRemovedSince();
108 //    void testGroupsAddedSince();
109 //    void testGroupsModifiedSince();
110 //    void testGroupsRemovedSince();
111     void testNcoTypes();
112     void testClassHierarchy();
113     void testMergeTwoOnlineContacts();
114     void testQRelationshipAndMergingContacts();
115     void testAsyncReadContacts();
116
117     void testSortContacts();
118
119     void testFilterContacts();
120     void testFilterContactsEndsWithAndPhoneNumber();
121     void testFilterTwoNameFields();
122     void testLocalIdFilterManyIds_data();
123     void testLocalIdFilterManyIds();
124     void testContactFilter_data();
125     void testContactFilter();
126
127     void testIMContactsAndMetacontactMasterPresence();
128     void testIMContactsFiltering();
129     void testContactsWithoutMeContact();
130     void testDefinitionNames();
131     void testMeContact();
132
133     void testDisplayLabelSynthesized();
134     void testDisplayLabelFetchDefault();
135     void testDisplayLabelFetchWithHints();
136
137 // NB#161788 and its dependant bugs
138     void testEditCombinations_email();
139     void testEditCombinations_url();
140     void testEditCombinations_address();
141     void testEditCombinations_phone();
142 // end NB#161788
143
144     void testVCardsAndSync_data();
145     void testVCardsAndSync();
146     void testCreateUuid();
147     void testSignals();
148
149     void testFuzzing_data();
150     void testFuzzing();
151
152 private:
153     // FIXME: Most of the following methods are editStruct methods!!!
154     void setName(editStruct &es, QString first = QString(), QString last = QString());
155     void setEmail(editStruct &es, QString email, QString context = QString());
156     void setUrl(editStruct &es, QString url, QString context = QString(), QString subType = QString());
157     void setPhone(editStruct &es, QString phone, QString context = QString(), QString subType = QString());
158     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());
159     void saveEditsToContact(editStruct &es, QContact &c);
160
161     void verifyEdits(QContact &verify, editStruct &es);
162     void runEditList(QList<editStruct> &editList);
163
164     void syncContactsAddedSinceHelper(QDateTime& start, QList<QContactLocalId>& addedIds);
165
166     void insertContact(const QString& contactURI, QContactLocalId uid, QString imId, QString imStatus, QString accountPath, QString protocol = "jabber");
167     void updateIMContactStatus(const QString& uri, QString imStatus);
168     QContact contact(QContactLocalId uid, QStringList detailsToLoad = QStringList());
169     QList<QContact> contacts(QList<QContactLocalId> uids, QStringList detailsToLoad = QStringList());
170
171     void testDisplayLabelFetch(const QStringList &definitionHints);
172
173 private:
174     QList<QContactLocalId> addedContacts;
175 };
176
177 class Slots: public QEventLoop
178 {
179     Q_OBJECT;
180
181 public:
182     Slots(int ms = -1);
183
184 public slots:
185     void notifyIds(const QList<QContactLocalId> &ids);
186     void idResultsAvailable();
187     void resultsAvailable();
188
189 public:
190     QList<QContactLocalId> ids;
191     QList<QContact> contacts;
192     bool singleShotMode;
193 };
194
195 #endif