diff options
Diffstat (limited to 'tests/mailsynctest.cpp')
-rw-r--r-- | tests/mailsynctest.cpp | 65 |
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 @@ | |||
33 | using namespace Sink; | 33 | using namespace Sink; |
34 | using namespace Sink::ApplicationDomain; | 34 | using namespace Sink::ApplicationDomain; |
35 | 35 | ||
36 | static 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 | |||
36 | void MailSyncTest::initTestCase() | 46 | void MailSyncTest::initTestCase() |
37 | { | 47 | { |
38 | Test::initTest(); | 48 | Test::initTest(); |
@@ -261,11 +271,7 @@ void MailSyncTest::testListRemovedSubFolder() | |||
261 | 271 | ||
262 | void MailSyncTest::testListMails() | 272 | void 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 | ||
427 | void MailSyncTest::testSyncSingleMail() | 431 | void 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 | |||
498 | void 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 | |||