summaryrefslogtreecommitdiffstats
path: root/examples/carddavresource/tests/carddavtest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/carddavresource/tests/carddavtest.cpp')
-rw-r--r--examples/carddavresource/tests/carddavtest.cpp57
1 files changed, 39 insertions, 18 deletions
diff --git a/examples/carddavresource/tests/carddavtest.cpp b/examples/carddavresource/tests/carddavtest.cpp
index 3da03a6..f75a30a 100644
--- a/examples/carddavresource/tests/carddavtest.cpp
+++ b/examples/carddavresource/tests/carddavtest.cpp
@@ -11,6 +11,7 @@
11#include <KDAV2/DavUrl> 11#include <KDAV2/DavUrl>
12#include <KDAV2/DavItemCreateJob> 12#include <KDAV2/DavItemCreateJob>
13#include <KDAV2/DavCollectionsFetchJob> 13#include <KDAV2/DavCollectionsFetchJob>
14#include <KDAV2/DavCollectionCreateJob>
14#include <KDAV2/DavCollection> 15#include <KDAV2/DavCollection>
15#include <KContacts/Addressee> 16#include <KContacts/Addressee>
16#include <KContacts/VCardConverter> 17#include <KContacts/VCardConverter>
@@ -36,21 +37,22 @@ class CardDavTest : public QObject
36 37
37 QByteArray mResourceInstanceIdentifier; 38 QByteArray mResourceInstanceIdentifier;
38 39
39 void createContact(const QString &firstname, const QString &lastname) 40 void createContact(const QString &firstname, const QString &lastname, const QString &collectionName)
40 { 41 {
41 QUrl mainUrl(QStringLiteral("http://localhost/dav/addressbooks/user/doe")); 42 QUrl mainUrl(QStringLiteral("http://localhost/dav/addressbooks/user/doe"));
42 mainUrl.setUserName(QStringLiteral("doe")); 43 mainUrl.setUserName(QStringLiteral("doe"));
43 mainUrl.setPassword(QStringLiteral("doe")); 44 mainUrl.setPassword(QStringLiteral("doe"));
44 45
45
46 KDAV2::DavUrl davUrl(mainUrl, KDAV2::CardDav); 46 KDAV2::DavUrl davUrl(mainUrl, KDAV2::CardDav);
47 47
48 auto *job = new KDAV2::DavCollectionsFetchJob(davUrl); 48 auto *job = new KDAV2::DavCollectionsFetchJob(davUrl);
49 job->exec(); 49 job->exec();
50 50
51 const auto collectionUrl = [&] { 51 const auto collectionUrl = [&] {
52 if (!job->collections().isEmpty()) { 52 for (const auto &col : job->collections()) {
53 return job->collections().first().url().url(); 53 if (col.displayName() == collectionName) {
54 return col.url().url();
55 }
54 } 56 }
55 return QUrl{}; 57 return QUrl{};
56 }(); 58 }();
@@ -68,6 +70,22 @@ class CardDavTest : public QObject
68 } 70 }
69 } 71 }
70 72
73 void createCollection(const QString &name)
74 {
75 QUrl mainUrl(QStringLiteral("http://localhost/dav/addressbooks/user/doe/") + name);
76 mainUrl.setUserName(QStringLiteral("doe"));
77 mainUrl.setPassword(QStringLiteral("doe"));
78
79 KDAV2::DavUrl davUrl(mainUrl, KDAV2::CardDav);
80 KDAV2::DavCollection collection{davUrl, name, KDAV2::DavCollection::Contacts};
81
82 auto createJob = new KDAV2::DavCollectionCreateJob(collection);
83 createJob->exec();
84 if (createJob->error()) {
85 qWarning() << createJob->errorString();
86 }
87 }
88
71 void resetTestEnvironment() 89 void resetTestEnvironment()
72 { 90 {
73 system("resetmailbox.sh"); 91 system("resetmailbox.sh");
@@ -95,10 +113,25 @@ private slots:
95 VERIFYEXEC(Sink::ResourceControl::start(mResourceInstanceIdentifier)); 113 VERIFYEXEC(Sink::ResourceControl::start(mResourceInstanceIdentifier));
96 } 114 }
97 115
116 void testSyncAddressbooks()
117 {
118 createCollection("addressbook2");
119
120 Sink::SyncScope scope;
121 scope.setType<Addressbook>();
122 scope.resourceFilter(mResourceInstanceIdentifier);
123
124 VERIFYEXEC(Sink::Store::synchronize(scope));
125 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier));
126 const auto addressbooks = Sink::Store::read<Addressbook>(Sink::Query().resourceFilter(mResourceInstanceIdentifier));
127 QCOMPARE(addressbooks.size(), 2);
128 }
129
98 void testSyncContacts() 130 void testSyncContacts()
99 { 131 {
100 createContact("john", "doe"); 132 //We want the extra collection from the previous test in this test.
101 createContact("jane", "doe"); 133 createContact("john", "doe", "personal");
134 createContact("jane", "doe", "personal");
102 Sink::SyncScope scope; 135 Sink::SyncScope scope;
103 scope.setType<Sink::ApplicationDomain::Contact>(); 136 scope.setType<Sink::ApplicationDomain::Contact>();
104 scope.resourceFilter(mResourceInstanceIdentifier); 137 scope.resourceFilter(mResourceInstanceIdentifier);
@@ -117,18 +150,6 @@ private slots:
117 } 150 }
118 } 151 }
119 152
120 void testSyncAddressbooks()
121 {
122 Sink::SyncScope scope;
123 scope.setType<Addressbook>();
124 scope.resourceFilter(mResourceInstanceIdentifier);
125
126 VERIFYEXEC(Sink::Store::synchronize(scope));
127 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(mResourceInstanceIdentifier));
128 const auto addressbooks = Sink::Store::read<Addressbook>(Sink::Query().resourceFilter(mResourceInstanceIdentifier));
129 QCOMPARE(addressbooks.size(), 1);
130 }
131
132 void testAddContact() 153 void testAddContact()
133 { 154 {
134 Sink::SyncScope scope; 155 Sink::SyncScope scope;