From 1e2e4437094d80f1cdd849c7341019910fc29fb1 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 13 Jun 2016 09:11:37 +0200 Subject: Get folder moves to work, and fix the mime message moving. --- tests/mailtest.cpp | 103 ++++++++++++++++++++++++++++++++++++++++++++++------- tests/mailtest.h | 2 ++ 2 files changed, 93 insertions(+), 12 deletions(-) (limited to 'tests') diff --git a/tests/mailtest.cpp b/tests/mailtest.cpp index 2fcad93..4e36517 100644 --- a/tests/mailtest.cpp +++ b/tests/mailtest.cpp @@ -242,11 +242,14 @@ void MailTest::testMoveMail() VERIFYEXEC(Store::create(mail)); VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); + + Mail modifiedMail; { auto job = Store::fetchAll(Query::RequestedProperties(QByteArrayList() << Mail::Folder::name << Mail::Subject::name << Mail::MimeMessage::name)) - .then>([=](const QList &mails) { + .then>([=, &modifiedMail](const QList &mails) { QCOMPARE(mails.size(), 1); auto mail = *mails.first(); + modifiedMail = mail; QCOMPARE(mail.getFolder(), folder.identifier()); Warning() << "path: " << mail.getMimeMessagePath(); QVERIFY(QFile(mail.getMimeMessagePath()).exists()); @@ -256,9 +259,9 @@ void MailTest::testMoveMail() VERIFYEXEC(ResourceControl::inspect(ResourceControl::Inspection::CacheIntegrityInspection(folder))); - mail.setFolder(folder1); + modifiedMail.setFolder(folder1); - VERIFYEXEC(Store::modify(mail)); + VERIFYEXEC(Store::modify(modifiedMail)); VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); { auto job = Store::fetchAll(Query::RequestedProperties(QByteArrayList() << Mail::Folder::name << Mail::Subject::name << Mail::MimeMessage::name)) @@ -349,17 +352,93 @@ void MailTest::testCreateDraft() VERIFYEXEC(job); //Ensure we can also query by folder - auto job2 = Store::fetchAll(Query::PropertyFilter("folder", folderIdentifier)) - .then >([&](const QList &mails) { - bool found = false; - for (const auto m : mails) { - if (m->identifier() == mail.identifier()) { - found = true; + { + auto job = Store::fetchAll(Query::PropertyFilter("folder", folderIdentifier)) + .then >([&](const QList &mails) { + bool found = false; + for (const auto m : mails) { + if (m->identifier() == mail.identifier()) { + found = true; + } } - } - QVERIFY(found); + QVERIFY(found); + }); + VERIFYEXEC(job); + } + + //Ensure the folder is also existing + { + ApplicationDomain::Folder folder; + auto job = Store::fetchAll(Query::IdentityFilter(folderIdentifier)) + .then >([&](const QList &folders) { + QCOMPARE(folders.size(), 1); + folder = *folders.first(); + }); + VERIFYEXEC(job); + VERIFYEXEC(ResourceControl::inspect(ResourceControl::Inspection::ExistenceInspection(folder, true))); + } + VERIFYEXEC(ResourceControl::inspect(ResourceControl::Inspection::ExistenceInspection(mail, true))); +} + +void MailTest::testModifyMailToDraft() +{ + if (!mCapabilities.contains(ResourceCapabilities::Mail::drafts)) { + QSKIP("Resource doesn't have the drafts capability"); + } + + auto folder = Folder::create(mResourceInstanceIdentifier); + folder.setName("sdljldskjf"); + VERIFYEXEC(Store::create(folder)); + + auto message = KMime::Message::Ptr::create(); + message->subject(true)->fromUnicodeString(QString::fromLatin1("Foobar"), "utf8"); + message->assemble(); + + auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); + mail.setMimeMessage(message->encodedContent()); + mail.setDraft(false); + mail.setFolder(folder); + + VERIFYEXEC(Store::create(mail)); + VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); + + ApplicationDomain::Mail modifiedMail; + { + auto job = Store::fetchOne(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << Mail::MimeMessage::name << Mail::Folder::name)) + .then([&](const ApplicationDomain::Mail &mail) { + modifiedMail = mail; + }); + VERIFYEXEC(job); + } + modifiedMail.setDraft(true); + VERIFYEXEC(Store::modify(modifiedMail)); + VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); + VERIFYEXEC(ResourceControl::flushReplayQueue(QByteArrayList() << mResourceInstanceIdentifier)); + + QByteArray folderIdentifier; + auto job = Store::fetchOne(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << Mail::MimeMessage::name << Mail::Folder::name)) + .then([&](const ApplicationDomain::Mail &mail) { + folderIdentifier = mail.getProperty("folder").toByteArray(); + QVERIFY(!folderIdentifier.isEmpty()); }); - VERIFYEXEC(job2); + VERIFYEXEC(job); + + //Ensure the folder is also existing + { + ApplicationDomain::Folder folder; + Query query; + query.ids << folderIdentifier; + query.request(); + auto job = Store::fetchAll(Query::IdentityFilter(folderIdentifier)) + .then >([&](const QList &folders) { + QCOMPARE(folders.size(), 1); + folder = *folders.first(); + QVERIFY(folder.getSpecialPurpose().contains("drafts")); + }); + VERIFYEXEC(job); + VERIFYEXEC(ResourceControl::inspect(ResourceControl::Inspection::ExistenceInspection(folder, true))); + } + VERIFYEXEC(ResourceControl::inspect(ResourceControl::Inspection::ExistenceInspection(mail, true))); } #include "mailtest.moc" diff --git a/tests/mailtest.h b/tests/mailtest.h index 3ba7f63..3de5e1f 100644 --- a/tests/mailtest.h +++ b/tests/mailtest.h @@ -66,7 +66,9 @@ private slots: void testCreateModifyDeleteMail(); void testMoveMail(); void testMarkMailAsRead(); + void testCreateDraft(); + void testModifyMailToDraft(); }; } -- cgit v1.2.3