From 917e5776fb65c5b9bef680b84ef8769d19088294 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 24 May 2016 23:56:18 +0200 Subject: Removed everything from maildirresourcetest that is covered in mailtest --- tests/maildirresourcetest.cpp | 276 ------------------------------------------ tests/mailtest.cpp | 17 ++- 2 files changed, 12 insertions(+), 281 deletions(-) diff --git a/tests/maildirresourcetest.cpp b/tests/maildirresourcetest.cpp index 17d297d..46d2a28 100644 --- a/tests/maildirresourcetest.cpp +++ b/tests/maildirresourcetest.cpp @@ -293,282 +293,6 @@ private slots: QTRY_VERIFY(!QFileInfo(targetPath).exists()); } - void testCreateMail() - { - Sink::Query query; - query.resources << "org.kde.maildir.instance1"; - - // Ensure all local data is processed - Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); - - auto message = KMime::Message::Ptr::create(); - message->subject(true)->fromUnicodeString(QString::fromLatin1("Foobar"), "utf8"); - message->assemble(); - - auto mail = Sink::ApplicationDomain::ApplicationDomainType::createEntity("org.kde.maildir.instance1"); - mail.setBlobProperty("mimeMessage", message->encodedContent()); - //FIXME generate accessors - // mail.setMimeMessage(message->encodedContent()); - - Sink::Store::create(mail).exec().waitForFinished(); - - // Ensure all local data is processed - Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); - - //Ensure extracted properties are up to date. - auto future = Sink::Store::fetchOne(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << "subject")) - .then([](const ApplicationDomain::Mail &mail) { - QCOMPARE(mail.getProperty("subject").toString(), QString::fromLatin1("Foobar")); - }).exec(); - future.waitForFinished(); - - auto targetPath = tempDir.path() + "/maildir1/cur"; - QDir dir(targetPath); - dir.setFilter(QDir::Files); - QTRY_COMPARE(dir.count(), static_cast(2)); - QFile file(targetPath + "/" + dir.entryList().last()); - QVERIFY(file.open(QIODevice::ReadOnly)); - KMime::Message m; - m.setContent(file.readAll()); - m.parse(); - QCOMPARE(m.subject(true)->asUnicodeString(), QString::fromLatin1("Foobar")); - } - - void testCreateMailInFolder() - { - auto query = Sink::Query::ResourceFilter("org.kde.maildir.instance1"); - - // Ensure all local data is processed - Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); - - //TODO - //create folder - //create mail in folder - //ensure mail is in folder - // - auto folder = Sink::ApplicationDomain::ApplicationDomainType::createEntity("org.kde.maildir.instance1"); - folder.setProperty("name", "newfolder"); - - Sink::Store::create(folder).exec().waitForFinished(); - - auto message = KMime::Message::Ptr::create(); - message->subject(true)->fromUnicodeString(QString::fromLatin1("Foobar"), "utf8"); - message->assemble(); - - auto mail = Sink::ApplicationDomain::ApplicationDomainType::createEntity("org.kde.maildir.instance1"); - mail.setBlobProperty("mimeMessage", message->encodedContent()); - mail.setProperty("folder", folder); - - Sink::Store::create(mail).exec().waitForFinished(); - // .then() - // .exec().waitForFinished(); - // - Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); - - auto future = Sink::Store::fetchOne(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << "mimeMessage" << "folder")) - .then([folder](const ApplicationDomain::Mail &mail) { - // qDebug() << "Retrieved draft: " << mail.getProperty("folder") << mail.identifier() << mail.getProperty("mimeMessage").toString(); - QCOMPARE(mail.getProperty("folder").toByteArray(), folder.identifier()); - }).exec(); - future.waitForFinished(); - if (future.errorCode()) { - qWarning() << future.errorCode() << future.errorMessage(); - } - QVERIFY(!future.errorCode()); - auto future2 = ResourceControl::inspect(ResourceControl::Inspection::ExistenceInspection(mail, false)).exec(); - future2.waitForFinished(); - QVERIFY(!future2.errorCode()); - - auto targetPath = tempDir.path() + "/maildir1/newfolder/cur"; - QDir dir(targetPath); - dir.setFilter(QDir::Files); - QCOMPARE(dir.count(), static_cast(1)); - } - - void testRemoveMail() - { - 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(); - - auto result = Store::fetchOne( - 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, QList>([query](const QList &mails) { - ASYNCCOMPARE(mails.size(), 1); - auto mail = mails.first(); - - return Store::remove(*mail) - .then(ResourceControl::flushReplayQueue(query.resources)) // The change needs to be replayed already - .then(ResourceControl::inspect(ResourceControl::Inspection::ExistenceInspection(*mail, false))); - }); - }) - .exec(); - result.waitForFinished(); - QVERIFY(!result.errorCode()); - } - - void testMarkMailAsRead() - { - 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")) - .then, QList>([query](const QList &mails) { - ASYNCCOMPARE(mails.size(), 1); - auto mail = mails.first(); - mail->setProperty("unread", true); - return Store::modify(*mail) - .then(ResourceControl::flushReplayQueue(query.resources)) // The change needs to be replayed already - .then(ResourceControl::inspect(ResourceControl::Inspection::PropertyInspection(*mail, "unread", true))) - .then(ResourceControl::inspect(ResourceControl::Inspection::PropertyInspection(*mail, "subject", mail->getProperty("subject")))); - }); - }) - .exec(); - result.waitForFinished(); - QVERIFY(!result.errorCode()); - - // 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(); - ASYNCVERIFY(!mail->getProperty("subject").toString().isEmpty()); - ASYNCCOMPARE(mail->getProperty("unread").toBool(), true); - ASYNCVERIFY(QFileInfo(mail->getProperty("mimeMessage").toString()).exists()); - return KAsync::null(); - }) - .exec(); - result2.waitForFinished(); - 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; - query.resources << "org.kde.maildir.instance1"; - - Sink::Store::synchronize(query).exec().waitForFinished(); - // Ensure all local data is processed - Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); - - auto message = KMime::Message::Ptr::create(); - message->subject(true)->fromUnicodeString(QString::fromLatin1("Foobar"), "utf8"); - message->assemble(); - - auto mail = Sink::ApplicationDomain::ApplicationDomainType::createEntity("org.kde.maildir.instance1"); - // Sink::ApplicationDomain::Mail::create("org.kde.maildir.instance1"); - mail.setBlobProperty("mimeMessage", message->encodedContent()); - mail.setProperty("draft", true); - - Sink::Store::create(mail).exec().waitForFinished(); - - // Ensure all local data is processed - Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); - - QByteArray folderIdentifier; - auto future = Sink::Store::fetchOne(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << "mimeMessage" << "folder")) - .then([&](const ApplicationDomain::Mail &mail) { - folderIdentifier = mail.getProperty("folder").toByteArray(); - QVERIFY(!folderIdentifier.isEmpty()); - }).exec(); - future.waitForFinished(); - if (future.errorCode()) { - qWarning() << future.errorCode() << future.errorMessage(); - } - QVERIFY(!future.errorCode()); - - //Ensure we can also query by folder - Sink::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); - }).exec().waitForFinished(); - } }; QTEST_MAIN(MaildirResourceTest) diff --git a/tests/mailtest.cpp b/tests/mailtest.cpp index 496b7ef..e47c3eb 100644 --- a/tests/mailtest.cpp +++ b/tests/mailtest.cpp @@ -156,6 +156,10 @@ void MailTest::testCreateModifyDeleteMail() QCOMPARE(mail.getSubject(), subject); QCOMPARE(mail.getFolder(), folder.identifier()); QVERIFY(QFile(mail.getMimeMessagePath()).exists()); + KMime::Message m; + m.setContent(mail.getMimeMessage()); + m.parse(); + QCOMPARE(m.subject(true)->asUnicodeString(), subject); }); VERIFYEXEC(job); } @@ -172,14 +176,17 @@ void MailTest::testCreateModifyDeleteMail() VERIFYEXEC(Store::modify(mail)); VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); { - auto job = Store::fetchAll(Query::RequestedProperties(QByteArrayList() << Mail::Folder::name << Mail::Subject::name)) + auto job = Store::fetchAll(Query::RequestedProperties(QByteArrayList() << Mail::Folder::name << Mail::Subject::name << Mail::MimeMessage::name)) .then>([=](const QList &mails) { QCOMPARE(mails.size(), 1); auto mail = *mails.first(); + QCOMPARE(mail.getSubject(), subject2); QCOMPARE(mail.getFolder(), folder.identifier()); - // QCOMPARE(mail.getSubject(), subject); - // TODO test access to modified mime message - + QVERIFY(QFile(mail.getMimeMessagePath()).exists()); + KMime::Message m; + m.setContent(mail.getMimeMessage()); + m.parse(); + QCOMPARE(m.subject(true)->asUnicodeString(), subject2); }); VERIFYEXEC(job); } @@ -222,7 +229,7 @@ void MailTest::testMarkMailAsRead() .then, QList>([this](const QList &mails) { ASYNCCOMPARE(mails.size(), 1); auto mail = mails.first(); - mail->setProperty("unread", true); + mail->setUnread(true); return Store::modify(*mail) .then(ResourceControl::flushReplayQueue(QByteArrayList() << mResourceInstanceIdentifier)) // The change needs to be replayed already .then(ResourceControl::inspect(ResourceControl::Inspection::PropertyInspection(*mail, Mail::Unread::name, true))) -- cgit v1.2.3