summaryrefslogtreecommitdiffstats
path: root/tests/mailsynctest.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-10-05 20:07:53 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-10-05 20:07:53 +0200
commit94829f17066dcbbeb9f641a4870dd88aa916ba24 (patch)
treecef0fef888e999cc840bbe90a9c155eae1b0890c /tests/mailsynctest.cpp
parente470f65cad943f8a3065c6f5f6287adcc704627e (diff)
downloadsink-94829f17066dcbbeb9f641a4870dd88aa916ba24.tar.gz
sink-94829f17066dcbbeb9f641a4870dd88aa916ba24.zip
A better resource filter api
Diffstat (limited to 'tests/mailsynctest.cpp')
-rw-r--r--tests/mailsynctest.cpp68
1 files changed, 34 insertions, 34 deletions
diff --git a/tests/mailsynctest.cpp b/tests/mailsynctest.cpp
index 8260978..98ac685 100644
--- a/tests/mailsynctest.cpp
+++ b/tests/mailsynctest.cpp
@@ -81,12 +81,12 @@ void MailSyncTest::testListFolders()
81 } 81 }
82 82
83 Sink::Query query; 83 Sink::Query query;
84 query.resources << mResourceInstanceIdentifier; 84 query.resourceFilter(mResourceInstanceIdentifier);
85 query.request<Folder::Name>().request<Folder::SpecialPurpose>(); 85 query.request<Folder::Name>().request<Folder::SpecialPurpose>();
86 86
87 // Ensure all local data is processed 87 // Ensure all local data is processed
88 VERIFYEXEC(Store::synchronize(query)); 88 VERIFYEXEC(Store::synchronize(query));
89 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 89 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
90 90
91 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([=](const QList<Folder::Ptr> &folders) { 91 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([=](const QList<Folder::Ptr> &folders) {
92 QStringList names; 92 QStringList names;
@@ -121,14 +121,14 @@ void MailSyncTest::testListFolders()
121void MailSyncTest::testListNewFolder() 121void MailSyncTest::testListNewFolder()
122{ 122{
123 Sink::Query query; 123 Sink::Query query;
124 query.resources << mResourceInstanceIdentifier; 124 query.resourceFilter(mResourceInstanceIdentifier);
125 query.request<Folder::Name>(); 125 query.request<Folder::Name>();
126 126
127 createFolder(QStringList() << "test2"); 127 createFolder(QStringList() << "test2");
128 128
129 // Ensure all local data is processed 129 // Ensure all local data is processed
130 VERIFYEXEC(Store::synchronize(query)); 130 VERIFYEXEC(Store::synchronize(query));
131 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 131 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
132 132
133 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([](const QList<Folder::Ptr> &folders) { 133 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([](const QList<Folder::Ptr> &folders) {
134 QStringList names; 134 QStringList names;
@@ -143,17 +143,17 @@ void MailSyncTest::testListNewFolder()
143void MailSyncTest::testListRemovedFolder() 143void MailSyncTest::testListRemovedFolder()
144{ 144{
145 Sink::Query query; 145 Sink::Query query;
146 query.resources << mResourceInstanceIdentifier; 146 query.resourceFilter(mResourceInstanceIdentifier);
147 query.request<Folder::Name>(); 147 query.request<Folder::Name>();
148 148
149 VERIFYEXEC(Store::synchronize(query)); 149 VERIFYEXEC(Store::synchronize(query));
150 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 150 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
151 151
152 removeFolder(QStringList() << "test2"); 152 removeFolder(QStringList() << "test2");
153 153
154 // Ensure all local data is processed 154 // Ensure all local data is processed
155 VERIFYEXEC(Store::synchronize(query)); 155 VERIFYEXEC(Store::synchronize(query));
156 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 156 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
157 157
158 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([](const QList<Folder::Ptr> &folders) { 158 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([](const QList<Folder::Ptr> &folders) {
159 QStringList names; 159 QStringList names;
@@ -171,14 +171,14 @@ void MailSyncTest::testListFolderHierarchy()
171 QSKIP("Missing capability folder.hierarchy"); 171 QSKIP("Missing capability folder.hierarchy");
172 } 172 }
173 Sink::Query query; 173 Sink::Query query;
174 query.resources << mResourceInstanceIdentifier; 174 query.resourceFilter(mResourceInstanceIdentifier);
175 query.request<Folder::Name>().request<Folder::Parent>(); 175 query.request<Folder::Name>().request<Folder::Parent>();
176 176
177 createFolder(QStringList() << "test" << "sub"); 177 createFolder(QStringList() << "test" << "sub");
178 178
179 // Ensure all local data is processed 179 // Ensure all local data is processed
180 VERIFYEXEC(Store::synchronize(query)); 180 VERIFYEXEC(Store::synchronize(query));
181 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 181 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
182 182
183 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([=](const QList<Folder::Ptr> &folders) { 183 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([=](const QList<Folder::Ptr> &folders) {
184 QHash<QString, Folder::Ptr> map; 184 QHash<QString, Folder::Ptr> map;
@@ -214,14 +214,14 @@ void MailSyncTest::testListNewSubFolder()
214 QSKIP("Missing capability mail.folderhierarchy"); 214 QSKIP("Missing capability mail.folderhierarchy");
215 } 215 }
216 Sink::Query query; 216 Sink::Query query;
217 query.resources << mResourceInstanceIdentifier; 217 query.resourceFilter(mResourceInstanceIdentifier);
218 query.request<Folder::Name>(); 218 query.request<Folder::Name>();
219 219
220 createFolder(QStringList() << "test" << "sub1"); 220 createFolder(QStringList() << "test" << "sub1");
221 221
222 // Ensure all local data is processed 222 // Ensure all local data is processed
223 VERIFYEXEC(Store::synchronize(query)); 223 VERIFYEXEC(Store::synchronize(query));
224 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 224 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
225 225
226 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([](const QList<Folder::Ptr> &folders) { 226 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([](const QList<Folder::Ptr> &folders) {
227 QStringList names; 227 QStringList names;
@@ -239,17 +239,17 @@ void MailSyncTest::testListRemovedSubFolder()
239 QSKIP("Missing capability folder.hierarchy"); 239 QSKIP("Missing capability folder.hierarchy");
240 } 240 }
241 Sink::Query query; 241 Sink::Query query;
242 query.resources << mResourceInstanceIdentifier; 242 query.resourceFilter(mResourceInstanceIdentifier);
243 query.request<Folder::Name>(); 243 query.request<Folder::Name>();
244 244
245 VERIFYEXEC(Store::synchronize(query)); 245 VERIFYEXEC(Store::synchronize(query));
246 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 246 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
247 247
248 removeFolder(QStringList() << "test" << "sub1"); 248 removeFolder(QStringList() << "test" << "sub1");
249 249
250 // Ensure all local data is processed 250 // Ensure all local data is processed
251 VERIFYEXEC(Store::synchronize(query)); 251 VERIFYEXEC(Store::synchronize(query));
252 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 252 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
253 253
254 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([](const QList<Folder::Ptr> &folders) { 254 auto job = Store::fetchAll<Folder>(query).syncThen<void, QList<Folder::Ptr>>([](const QList<Folder::Ptr> &folders) {
255 QStringList names; 255 QStringList names;
@@ -264,12 +264,12 @@ void MailSyncTest::testListRemovedSubFolder()
264void MailSyncTest::testListMails() 264void MailSyncTest::testListMails()
265{ 265{
266 Sink::Query query; 266 Sink::Query query;
267 query.resources << mResourceInstanceIdentifier; 267 query.resourceFilter(mResourceInstanceIdentifier);
268 query.request<Mail::Subject>().request<Mail::MimeMessage>().request<Mail::Folder>().request<Mail::Date>(); 268 query.request<Mail::Subject>().request<Mail::MimeMessage>().request<Mail::Folder>().request<Mail::Date>();
269 269
270 // Ensure all local data is processed 270 // Ensure all local data is processed
271 VERIFYEXEC(Store::synchronize(query)); 271 VERIFYEXEC(Store::synchronize(query));
272 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 272 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
273 273
274 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) { 274 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) {
275 QCOMPARE(mails.size(), 1); 275 QCOMPARE(mails.size(), 1);
@@ -290,15 +290,15 @@ void MailSyncTest::testListMails()
290void MailSyncTest::testResyncMails() 290void MailSyncTest::testResyncMails()
291{ 291{
292 Sink::Query query; 292 Sink::Query query;
293 query.resources << mResourceInstanceIdentifier; 293 query.resourceFilter(mResourceInstanceIdentifier);
294 294
295 // Ensure all local data is processed 295 // Ensure all local data is processed
296 VERIFYEXEC(Store::synchronize(query)); 296 VERIFYEXEC(Store::synchronize(query));
297 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 297 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
298 298
299 // Ensure all local data is processed 299 // Ensure all local data is processed
300 VERIFYEXEC(Store::synchronize(query)); 300 VERIFYEXEC(Store::synchronize(query));
301 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 301 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
302 302
303 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) { 303 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) {
304 QCOMPARE(mails.size(), 1); 304 QCOMPARE(mails.size(), 1);
@@ -309,20 +309,20 @@ void MailSyncTest::testResyncMails()
309void MailSyncTest::testFetchNewRemovedMessages() 309void MailSyncTest::testFetchNewRemovedMessages()
310{ 310{
311 Sink::Query query; 311 Sink::Query query;
312 query.resources << mResourceInstanceIdentifier; 312 query.resourceFilter(mResourceInstanceIdentifier);
313 query.request<Mail::Subject>().request<Mail::MimeMessage>(); 313 query.request<Mail::Subject>().request<Mail::MimeMessage>();
314 314
315 // Ensure all local data is processed 315 // Ensure all local data is processed
316 VERIFYEXEC(Store::synchronize(query)); 316 VERIFYEXEC(Store::synchronize(query));
317 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 317 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
318 318
319 auto msg = KMime::Message::Ptr::create(); 319 auto msg = KMime::Message::Ptr::create();
320 msg->subject(true)->fromUnicodeString("Foobar", "utf8"); 320 msg->subject(true)->fromUnicodeString("Foobar", "utf8");
321 msg->assemble(); 321 msg->assemble();
322 auto messageIdentifier = createMessage(QStringList() << "test", msg->encodedContent(true)); 322 auto messageIdentifier = createMessage(QStringList() << "test", msg->encodedContent(true));
323 323
324 Store::synchronize(query).exec().waitForFinished(); 324 VERIFYEXEC(Store::synchronize(query));
325 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 325 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
326 326
327 { 327 {
328 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) { 328 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) {
@@ -333,8 +333,8 @@ void MailSyncTest::testFetchNewRemovedMessages()
333 333
334 removeMessage(QStringList() << "test", messageIdentifier); 334 removeMessage(QStringList() << "test", messageIdentifier);
335 335
336 Store::synchronize(query).exec().waitForFinished(); 336 VERIFYEXEC(Store::synchronize(query));
337 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 337 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
338 338
339 { 339 {
340 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) { 340 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) {
@@ -347,7 +347,8 @@ void MailSyncTest::testFetchNewRemovedMessages()
347void MailSyncTest::testFlagChange() 347void MailSyncTest::testFlagChange()
348{ 348{
349 Sink::Query query; 349 Sink::Query query;
350 query.resources << mResourceInstanceIdentifier; 350 query.resourceFilter(mResourceInstanceIdentifier);
351 query.filter<Mail::Important>(true);
351 query.request<Mail::Subject>().request<Mail::Important>(); 352 query.request<Mail::Subject>().request<Mail::Important>();
352 353
353 auto msg = KMime::Message::Ptr::create(); 354 auto msg = KMime::Message::Ptr::create();
@@ -355,13 +356,12 @@ void MailSyncTest::testFlagChange()
355 msg->assemble(); 356 msg->assemble();
356 auto messageIdentifier = createMessage(QStringList() << "test", msg->encodedContent(true)); 357 auto messageIdentifier = createMessage(QStringList() << "test", msg->encodedContent(true));
357 358
358 Store::synchronize(query).exec().waitForFinished(); 359 VERIFYEXEC(Store::synchronize(query));
359 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 360 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
360 361
361 { 362 {
362 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) { 363 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) {
363 QCOMPARE(mails.size(), 2); 364 QCOMPARE(mails.size(), 0);
364 QVERIFY(!mails.at(1)->getImportant());
365 }); 365 });
366 VERIFYEXEC(job); 366 VERIFYEXEC(job);
367 } 367 }
@@ -370,12 +370,12 @@ void MailSyncTest::testFlagChange()
370 370
371 // Ensure all local data is processed 371 // Ensure all local data is processed
372 VERIFYEXEC(Store::synchronize(query)); 372 VERIFYEXEC(Store::synchronize(query));
373 ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); 373 VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier));
374 374
375 { 375 {
376 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) { 376 auto job = Store::fetchAll<Mail>(query).syncThen<void, QList<Mail::Ptr>>([](const QList<Mail::Ptr> &mails) {
377 QCOMPARE(mails.size(), 2); 377 QCOMPARE(mails.size(), 1);
378 QVERIFY(mails.at(1)->getImportant()); 378 QVERIFY(mails.first()->getImportant());
379 }); 379 });
380 VERIFYEXEC(job); 380 VERIFYEXEC(job);
381 } 381 }
@@ -389,7 +389,7 @@ void MailSyncTest::testFailingSync()
389 VERIFYEXEC(Store::create(resource)); 389 VERIFYEXEC(Store::create(resource));
390 390
391 Sink::Query query; 391 Sink::Query query;
392 query.resources << resource.identifier(); 392 query.resourceFilter(resource.identifier());
393 393
394 // Ensure sync fails if resource is misconfigured 394 // Ensure sync fails if resource is misconfigured
395 auto future = Store::synchronize(query).exec(); 395 auto future = Store::synchronize(query).exec();