From 62c7e132e2c546566c37949f24818aceb5d57c3d Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 11 May 2016 09:59:44 +0200 Subject: Handle modifications in maildir --- tests/maildirresourcetest.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'tests') diff --git a/tests/maildirresourcetest.cpp b/tests/maildirresourcetest.cpp index 6d78242..968abde 100644 --- a/tests/maildirresourcetest.cpp +++ b/tests/maildirresourcetest.cpp @@ -466,6 +466,64 @@ private slots: QVERIFY(!result2.errorCode()); } + void testEditMail() + { + using namespace Sink; + using namespace Sink::ApplicationDomain; + + auto query = Query::ResourceFilter("org.kde.maildir.instance1"); + Store::synchronize(query).exec().waitForFinished(); + ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); + + Folder f; + + auto result = Store::fetchOne( + Query::ResourceFilter("org.kde.maildir.instance1") + Query::PropertyFilter("name", "maildir1") + Query::RequestedProperties(QByteArrayList() << "name")) + .then, Folder>([query, &f](const Folder &folder) { + f = folder; + return Store::fetchAll(Query::ResourceFilter("org.kde.maildir.instance1") + Query::PropertyFilter("folder", folder) + + Query::RequestedProperties(QByteArrayList() << "folder" + << "subject" << "mimeMessage")) + .then, QList>([query](const QList &mails) { + ASYNCCOMPARE(mails.size(), 1); + auto mail = mails.first(); + auto message = KMime::Message::Ptr::create(); + message->subject(true)->fromUnicodeString("Test1", "utf8"); + message->assemble(); + mail->setMimeMessage(message->encodedContent()); + return Store::modify(*mail); + }); + }) + .exec(); + result.waitForFinished(); + QVERIFY(!result.errorCode()); + + ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); + + // Verify that we can still query for all relevant information + auto result2 = Store::fetchAll( + Query::ResourceFilter("org.kde.maildir.instance1") + Query::PropertyFilter("folder", f) + Query::RequestedProperties(QByteArrayList() << "folder" + << "subject" + << "mimeMessage" + << "unread")) + .then, QList>([](const QList &mails) { + ASYNCCOMPARE(mails.size(), 1); + auto mail = mails.first(); + ASYNCCOMPARE(mail->getProperty("subject").toString(), QString("Test1")); + ASYNCVERIFY(QFileInfo(mail->getMimeMessagePath()).exists()); + return KAsync::null(); + }) + .exec(); + result2.waitForFinished(); + QVERIFY(!result2.errorCode()); + + //Ensure we didn't leave a stale message behind + auto targetPath = tempDir.path() + "/maildir1/cur"; + QDir dir(targetPath); + dir.setFilter(QDir::Files); + QTRY_COMPARE(dir.count(), static_cast(1)); + } + void testCreateDraft() { Sink::Query query; -- cgit v1.2.3