summaryrefslogtreecommitdiffstats
path: root/tests/mailsynctest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/mailsynctest.cpp')
-rw-r--r--tests/mailsynctest.cpp65
1 files changed, 58 insertions, 7 deletions
diff --git a/tests/mailsynctest.cpp b/tests/mailsynctest.cpp
index 058cae4..69541e1 100644
--- a/tests/mailsynctest.cpp
+++ b/tests/mailsynctest.cpp
@@ -33,6 +33,16 @@
33using namespace Sink; 33using namespace Sink;
34using namespace Sink::ApplicationDomain; 34using namespace Sink::ApplicationDomain;
35 35
36static QByteArray newMessage(const QString &subject)
37{
38 auto msg = KMime::Message::Ptr::create();
39 msg->subject(true)->fromUnicodeString(subject, "utf8");
40 msg->date(true)->setDateTime(QDateTime::currentDateTimeUtc());
41 msg->assemble();
42 return msg->encodedContent(true);
43}
44
45
36void MailSyncTest::initTestCase() 46void MailSyncTest::initTestCase()
37{ 47{
38 Test::initTest(); 48 Test::initTest();
@@ -261,11 +271,7 @@ void MailSyncTest::testListRemovedSubFolder()
261 271
262void MailSyncTest::testListMails() 272void MailSyncTest::testListMails()
263{ 273{
264 auto msg = KMime::Message::Ptr::create(); 274 createMessage(QStringList() << "test", newMessage("This is a Subject."));
265 msg->subject(true)->fromUnicodeString("This is a Subject.", "utf8");
266 msg->date(true)->setDateTime(QDateTime::currentDateTimeUtc());
267 msg->assemble();
268 createMessage(QStringList() << "test", msg->encodedContent(true));
269 275
270 Sink::Query query; 276 Sink::Query query;
271 query.resourceFilter(mResourceInstanceIdentifier); 277 query.resourceFilter(mResourceInstanceIdentifier);
@@ -420,8 +426,6 @@ void MailSyncTest::testSyncSingleFolder()
420 // Ensure all local data is processed 426 // Ensure all local data is processed
421 VERIFYEXEC(Store::synchronize(syncScope)); 427 VERIFYEXEC(Store::synchronize(syncScope));
422 VERIFYEXEC(ResourceControl::flushMessageQueue(mResourceInstanceIdentifier)); 428 VERIFYEXEC(ResourceControl::flushMessageQueue(mResourceInstanceIdentifier));
423
424
425} 429}
426 430
427void MailSyncTest::testSyncSingleMail() 431void MailSyncTest::testSyncSingleMail()
@@ -490,3 +494,50 @@ void MailSyncTest::testFailingSync()
490 // Ensure sync fails if resource is misconfigured 494 // Ensure sync fails if resource is misconfigured
491 QTRY_VERIFY(errorReceived); 495 QTRY_VERIFY(errorReceived);
492} 496}
497
498void MailSyncTest::testSyncUidvalidity()
499{
500 createFolder({"uidvalidity"});
501 createMessage({"uidvalidity"}, newMessage("old"));
502
503 VERIFYEXEC(Store::synchronize(SyncScope{ApplicationDomain::getTypeName<Folder>()}.resourceFilter(mResourceInstanceIdentifier)));
504 VERIFYEXEC(ResourceControl::flushMessageQueue(mResourceInstanceIdentifier));
505
506 auto folder = Store::readOne<Folder>(Query{}.resourceFilter(mResourceInstanceIdentifier).filter<Folder::Name>("uidvalidity"));
507
508 auto folderSyncScope = SyncScope{ApplicationDomain::getTypeName<Mail>()};
509 folderSyncScope.resourceFilter(mResourceInstanceIdentifier);
510 folderSyncScope.filter<Mail::Folder>(QVariant::fromValue(folder.identifier()));
511 VERIFYEXEC(Store::synchronize(folderSyncScope));
512 VERIFYEXEC(ResourceControl::flushMessageQueue(mResourceInstanceIdentifier));
513
514
515 {
516 Sink::Query query;
517 query.resourceFilter(mResourceInstanceIdentifier);
518 query.request<Mail::Subject>().request<Mail::MimeMessage>().request<Mail::Folder>().request<Mail::Date>();
519 query.filter<Mail::Folder>(folder);
520 auto mails = Store::read<Mail>(query);
521 QCOMPARE(mails.size(), 1);
522 }
523
524 resetTestEnvironment();
525
526 createFolder({"uidvalidity"});
527 createMessage({"uidvalidity"}, newMessage("new"));
528
529 // Ensure all local data is processed
530 VERIFYEXEC(Store::synchronize(folderSyncScope));
531 VERIFYEXEC(ResourceControl::flushMessageQueue(mResourceInstanceIdentifier));
532
533 //Now we should have one message
534 auto folder2 = Store::readOne<Folder>(Query{}.resourceFilter(mResourceInstanceIdentifier).filter<Folder::Name>("uidvalidity"));
535 Sink::Query query;
536 query.resourceFilter(mResourceInstanceIdentifier);
537 query.request<Mail::Subject>().request<Mail::MimeMessage>().request<Mail::Folder>().request<Mail::Date>();
538 query.filter<Mail::Folder>(folder2);
539 auto mails = Store::read<Mail>(query);
540 QCOMPARE(mails.size(), 1);
541 QCOMPARE(mails.first().getSubject(), {"new"});
542}
543