From 2f0605ded80cd4c216b8cbaaf228e98811207744 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 1 Feb 2016 13:14:14 +0100 Subject: Ensure maildir flagchanges work completely --- tests/maildirresourcetest.cpp | 97 ++++++++++++++++++++++++++----------------- 1 file changed, 60 insertions(+), 37 deletions(-) (limited to 'tests/maildirresourcetest.cpp') diff --git a/tests/maildirresourcetest.cpp b/tests/maildirresourcetest.cpp index 6ad6ca6..85c329e 100644 --- a/tests/maildirresourcetest.cpp +++ b/tests/maildirresourcetest.cpp @@ -307,26 +307,26 @@ private Q_SLOTS: Store::flushMessageQueue(query.resources).exec().waitForFinished(); auto result = Store::fetchOne( - Query::ResourceFilter("org.kde.maildir.instance1") + Query::PropertyFilter("name", "maildir1") + Query::RequestedProperties(QByteArrayList() << "name") + Query::ResourceFilter("org.kde.maildir.instance1") + Query::PropertyFilter("name", "maildir1") + Query::RequestedProperties(QByteArrayList() << "name") + ) + .then, Folder>([query](const Folder &folder) { + return Store::fetchAll( + Query::PropertyFilter("folder", folder) + Query::RequestedProperties(QByteArrayList() << "folder" << "subject") ) - .then, Folder>([query](const Folder &folder) { - return Store::fetchAll( - Query::PropertyFilter("folder", folder) + Query::RequestedProperties(QByteArrayList() << "folder" << "subject") - ) - .then, QList >([query](const QList &mails) { - //Can't use QCOMPARE because it tries to return FIXME Implement ASYNCCOMPARE - if (mails.size() != 1) { - return KAsync::error(1, "Wrong number of mails."); - } - auto mail = mails.first(); - - return Store::remove(*mail) - .then(Store::flushReplayQueue(query.resources)) //The change needs to be replayed already - .then(Resources::inspect(Resources::Inspection::ExistenceInspection(*mail, false))); - }) - .then([](){}); + .then, QList >([query](const QList &mails) { + //Can't use QCOMPARE because it tries to return FIXME Implement ASYNCCOMPARE + if (mails.size() != 1) { + return KAsync::error(1, "Wrong number of mails."); + } + auto mail = mails.first(); + + return Store::remove(*mail) + .then(Store::flushReplayQueue(query.resources)) //The change needs to be replayed already + .then(Resources::inspect(Resources::Inspection::ExistenceInspection(*mail, false))); }) - .exec(); + .then([](){}); + }) + .exec(); result.waitForFinished(); QVERIFY(!result.errorCode()); } @@ -340,31 +340,54 @@ private Q_SLOTS: Store::synchronize(query).exec().waitForFinished(); Store::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") + 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") ) - .then, Folder>([query](const Folder &folder) { Trace() << "Found a folder" << folder.identifier(); - return Store::fetchAll( - Query::PropertyFilter("folder", folder) + Query::RequestedProperties(QByteArrayList() << "folder" << "subject") - ) - .then, QList >([query](const QList &mails) { - //Can't use QCOMPARE because it tries to return FIXME Implement ASYNCCOMPARE - if (mails.size() != 1) { - return KAsync::error(1, "Wrong number of mails."); - } - auto mail = mails.first(); - mail->setProperty("unread", true); - auto inspectionCommand = Resources::Inspection::PropertyInspection(*mail, "unread", true); - return Store::modify(*mail) - .then(Store::flushReplayQueue(query.resources)) //The change needs to be replayed already - .then(Resources::inspect(inspectionCommand)); - }) - .then([](){}); + .then, QList >([query](const QList &mails) { + //Can't use QCOMPARE because it tries to return FIXME Implement ASYNCCOMPARE + if (mails.size() != 1) { + return KAsync::error(1, "Wrong number of mails."); + } + auto mail = mails.first(); + mail->setProperty("unread", true); + return Store::modify(*mail) + .then(Store::flushReplayQueue(query.resources)) //The change needs to be replayed already + .then(Resources::inspect(Resources::Inspection::PropertyInspection(*mail, "unread", true))) + .then(Resources::inspect(Resources::Inspection::PropertyInspection(*mail, "subject", mail->getProperty("subject")))); }) - .exec(); + .then([](){}); + }) + .exec(); result.waitForFinished(); QVERIFY(!result.errorCode()); + + auto result2 = Store::fetchAll( + Query::ResourceFilter("org.kde.maildir.instance1") + Query::PropertyFilter("folder", f) + Query::RequestedProperties(QByteArrayList() << "folder" << "subject") + ) + .then, QList >([query](const QList &mails) { + //Can't use QCOMPARE because it tries to return FIXME Implement ASYNCCOMPARE + if (mails.size() != 1) { + qWarning() << "Wrong number of mails"; + return KAsync::error(1, "Wrong number of mails."); + } + auto mail = mails.first(); + if (mail->getProperty("subject").toString().isEmpty()) { + qWarning() << "Wrong subject"; + return KAsync::error(1, "Wrong subject."); + } + return KAsync::null(); + }) + .exec(); + result2.waitForFinished(); + QVERIFY(!result2.errorCode()); } }; -- cgit v1.2.3