diff options
-rw-r--r-- | examples/maildirresource/maildirresource.cpp | 4 | ||||
-rw-r--r-- | tests/maildirresourcetest.cpp | 33 |
2 files changed, 33 insertions, 4 deletions
diff --git a/examples/maildirresource/maildirresource.cpp b/examples/maildirresource/maildirresource.cpp index caebd47..c64fc35 100644 --- a/examples/maildirresource/maildirresource.cpp +++ b/examples/maildirresource/maildirresource.cpp | |||
@@ -146,10 +146,10 @@ MaildirResource::MaildirResource(const QByteArray &instanceIdentifier, const QSh | |||
146 | 146 | ||
147 | auto folderUpdater = new FolderUpdater(QByteArray()); | 147 | auto folderUpdater = new FolderUpdater(QByteArray()); |
148 | addType(ENTITY_TYPE_MAIL, mMailAdaptorFactory, | 148 | addType(ENTITY_TYPE_MAIL, mMailAdaptorFactory, |
149 | QVector<Sink::Preprocessor*>() << new DefaultIndexUpdater<Sink::ApplicationDomain::Mail> << folderUpdater); | 149 | QVector<Sink::Preprocessor*>() << folderUpdater << new DefaultIndexUpdater<Sink::ApplicationDomain::Mail>); |
150 | auto folderPreprocessor = new FolderPreprocessor; | 150 | auto folderPreprocessor = new FolderPreprocessor; |
151 | addType(ENTITY_TYPE_FOLDER, mFolderAdaptorFactory, | 151 | addType(ENTITY_TYPE_FOLDER, mFolderAdaptorFactory, |
152 | QVector<Sink::Preprocessor*>() << new DefaultIndexUpdater<Sink::ApplicationDomain::Folder> << folderPreprocessor); | 152 | QVector<Sink::Preprocessor*>() << folderPreprocessor << new DefaultIndexUpdater<Sink::ApplicationDomain::Folder>); |
153 | 153 | ||
154 | KPIM::Maildir dir(mMaildirPath, true); | 154 | KPIM::Maildir dir(mMaildirPath, true); |
155 | mDraftsFolder = dir.addSubFolder("drafts"); | 155 | mDraftsFolder = dir.addSubFolder("drafts"); |
diff --git a/tests/maildirresourcetest.cpp b/tests/maildirresourcetest.cpp index ec685a6..f53750f 100644 --- a/tests/maildirresourcetest.cpp +++ b/tests/maildirresourcetest.cpp | |||
@@ -71,6 +71,9 @@ private slots: | |||
71 | { | 71 | { |
72 | targetPath = tempDir.path() + "/maildir1/"; | 72 | targetPath = tempDir.path() + "/maildir1/"; |
73 | 73 | ||
74 | //FIXME initTest only works for the current process, | ||
75 | //we also have to start resources in test-mode | ||
76 | // Sink::Test::initTest(); | ||
74 | Sink::Log::setDebugOutputLevel(Sink::Log::Trace); | 77 | Sink::Log::setDebugOutputLevel(Sink::Log::Trace); |
75 | MaildirResource::removeFromDisk("org.kde.maildir.instance1"); | 78 | MaildirResource::removeFromDisk("org.kde.maildir.instance1"); |
76 | Sink::ApplicationDomain::SinkResource resource; | 79 | Sink::ApplicationDomain::SinkResource resource; |
@@ -306,6 +309,8 @@ private slots: | |||
306 | 309 | ||
307 | Sink::ApplicationDomain::Mail mail("org.kde.maildir.instance1"); | 310 | Sink::ApplicationDomain::Mail mail("org.kde.maildir.instance1"); |
308 | mail.setBlobProperty("mimeMessage", message->encodedContent()); | 311 | mail.setBlobProperty("mimeMessage", message->encodedContent()); |
312 | //FIXME generate accessors | ||
313 | // mail.setMimeMessage(message->encodedContent()); | ||
309 | 314 | ||
310 | Sink::Store::create(mail).exec().waitForFinished(); | 315 | Sink::Store::create(mail).exec().waitForFinished(); |
311 | 316 | ||
@@ -331,6 +336,11 @@ private slots: | |||
331 | // Ensure all local data is processed | 336 | // Ensure all local data is processed |
332 | Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); | 337 | Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); |
333 | 338 | ||
339 | //TODO | ||
340 | //create folder | ||
341 | //create mail in folder | ||
342 | //ensure mail is in folder | ||
343 | // | ||
334 | auto folder = Sink::ApplicationDomain::ApplicationDomainType::createEntity<Sink::ApplicationDomain::Folder>("org.kde.maildir.instance1"); | 344 | auto folder = Sink::ApplicationDomain::ApplicationDomainType::createEntity<Sink::ApplicationDomain::Folder>("org.kde.maildir.instance1"); |
335 | folder.setProperty("name", "newfolder"); | 345 | folder.setProperty("name", "newfolder"); |
336 | 346 | ||
@@ -345,10 +355,14 @@ private slots: | |||
345 | mail.setProperty("folder", folder); | 355 | mail.setProperty("folder", folder); |
346 | 356 | ||
347 | Sink::Store::create(mail).exec().waitForFinished(); | 357 | Sink::Store::create(mail).exec().waitForFinished(); |
358 | // .then() | ||
359 | // .exec().waitForFinished(); | ||
360 | // | ||
348 | Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); | 361 | Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); |
349 | 362 | ||
350 | auto future = Sink::Store::fetchOne<ApplicationDomain::Mail>(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << "mimeMessage" << "folder")) | 363 | auto future = Sink::Store::fetchOne<ApplicationDomain::Mail>(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << "mimeMessage" << "folder")) |
351 | .then<void, ApplicationDomain::Mail>([folder](const ApplicationDomain::Mail &mail) { | 364 | .then<void, ApplicationDomain::Mail>([folder](const ApplicationDomain::Mail &mail) { |
365 | // qDebug() << "Retrieved draft: " << mail.getProperty("folder") << mail.identifier() << mail.getProperty("mimeMessage").toString(); | ||
352 | QCOMPARE(mail.getProperty("folder").toByteArray(), folder.identifier()); | 366 | QCOMPARE(mail.getProperty("folder").toByteArray(), folder.identifier()); |
353 | }).exec(); | 367 | }).exec(); |
354 | future.waitForFinished(); | 368 | future.waitForFinished(); |
@@ -459,6 +473,7 @@ private slots: | |||
459 | message->assemble(); | 473 | message->assemble(); |
460 | 474 | ||
461 | auto mail = Sink::ApplicationDomain::ApplicationDomainType::createEntity<Sink::ApplicationDomain::Mail>("org.kde.maildir.instance1"); | 475 | auto mail = Sink::ApplicationDomain::ApplicationDomainType::createEntity<Sink::ApplicationDomain::Mail>("org.kde.maildir.instance1"); |
476 | // Sink::ApplicationDomain::Mail::create("org.kde.maildir.instance1"); | ||
462 | mail.setBlobProperty("mimeMessage", message->encodedContent()); | 477 | mail.setBlobProperty("mimeMessage", message->encodedContent()); |
463 | mail.setProperty("draft", true); | 478 | mail.setProperty("draft", true); |
464 | 479 | ||
@@ -467,15 +482,29 @@ private slots: | |||
467 | // Ensure all local data is processed | 482 | // Ensure all local data is processed |
468 | Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); | 483 | Sink::ResourceControl::flushMessageQueue(query.resources).exec().waitForFinished(); |
469 | 484 | ||
485 | QByteArray folderIdentifier; | ||
470 | auto future = Sink::Store::fetchOne<ApplicationDomain::Mail>(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << "mimeMessage" << "folder")) | 486 | auto future = Sink::Store::fetchOne<ApplicationDomain::Mail>(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << "mimeMessage" << "folder")) |
471 | .then<void, ApplicationDomain::Mail>([](const ApplicationDomain::Mail &mail) { | 487 | .then<void, ApplicationDomain::Mail>([&](const ApplicationDomain::Mail &mail) { |
472 | QVERIFY(!mail.getProperty("folder").toByteArray().isEmpty()); | 488 | folderIdentifier = mail.getProperty("folder").toByteArray(); |
489 | QVERIFY(!folderIdentifier.isEmpty()); | ||
473 | }).exec(); | 490 | }).exec(); |
474 | future.waitForFinished(); | 491 | future.waitForFinished(); |
475 | if (future.errorCode()) { | 492 | if (future.errorCode()) { |
476 | qWarning() << future.errorCode() << future.errorMessage(); | 493 | qWarning() << future.errorCode() << future.errorMessage(); |
477 | } | 494 | } |
478 | QVERIFY(!future.errorCode()); | 495 | QVERIFY(!future.errorCode()); |
496 | |||
497 | //Ensure we can also query by folder | ||
498 | Sink::Store::fetchAll<ApplicationDomain::Mail>(Query::PropertyFilter("folder", folderIdentifier)) | ||
499 | .then<void, QList<ApplicationDomain::Mail::Ptr> >([&](const QList<ApplicationDomain::Mail::Ptr> &mails) { | ||
500 | bool found = false; | ||
501 | for (const auto m : mails) { | ||
502 | if (m->identifier() == mail.identifier()) { | ||
503 | found = true; | ||
504 | } | ||
505 | } | ||
506 | QVERIFY(found); | ||
507 | }).exec().waitForFinished(); | ||
479 | } | 508 | } |
480 | }; | 509 | }; |
481 | 510 | ||