From bd64dd286ddc0c5732b9977f78dc945ac40f5b4f Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 14 Jun 2016 13:25:21 +0200 Subject: Prepared trash test --- tests/mailtest.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- tests/mailtest.h | 2 ++ 2 files changed, 68 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/mailtest.cpp b/tests/mailtest.cpp index 4e36517..6dfe901 100644 --- a/tests/mailtest.cpp +++ b/tests/mailtest.cpp @@ -402,6 +402,70 @@ void MailTest::testModifyMailToDraft() VERIFYEXEC(Store::create(mail)); VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); + auto modifiedMail = Store::readOne(Query::IdentityFilter(mail).request().request()); + // 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(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))); +} + +void MailTest::testModifyMailToTrash() +{ + if (!mCapabilities.contains(ResourceCapabilities::Mail::trash)) { + QSKIP("Resource doesn't have the trash 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.setTrash(false); + mail.setFolder(folder); + + VERIFYEXEC(Store::create(mail)); + VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); + + // auto modifiedMail = Store::read(Query::IdentityFilter(mail).request().request()).value(); + ApplicationDomain::Mail modifiedMail; { auto job = Store::fetchOne(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << Mail::MimeMessage::name << Mail::Folder::name)) @@ -410,7 +474,7 @@ void MailTest::testModifyMailToDraft() }); VERIFYEXEC(job); } - modifiedMail.setDraft(true); + modifiedMail.setTrash(true); VERIFYEXEC(Store::modify(modifiedMail)); VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); VERIFYEXEC(ResourceControl::flushReplayQueue(QByteArrayList() << mResourceInstanceIdentifier)); @@ -433,7 +497,7 @@ void MailTest::testModifyMailToDraft() .then >([&](const QList &folders) { QCOMPARE(folders.size(), 1); folder = *folders.first(); - QVERIFY(folder.getSpecialPurpose().contains("drafts")); + QVERIFY(folder.getSpecialPurpose().contains("trash")); }); VERIFYEXEC(job); VERIFYEXEC(ResourceControl::inspect(ResourceControl::Inspection::ExistenceInspection(folder, true))); diff --git a/tests/mailtest.h b/tests/mailtest.h index 3de5e1f..16d5d73 100644 --- a/tests/mailtest.h +++ b/tests/mailtest.h @@ -69,6 +69,8 @@ private slots: void testCreateDraft(); void testModifyMailToDraft(); + + void testModifyMailToTrash(); }; } -- cgit v1.2.3