summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-05-09 10:20:52 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-05-09 10:20:52 +0200
commit0079a50028413ce7e95b74505c9e1b144e0626be (patch)
tree673fc349d3854bea820f4c561138b08176d01909
parent13560f13b1f3d204efc52944f0aaadbad5567d06 (diff)
downloadsink-0079a50028413ce7e95b74505c9e1b144e0626be.tar.gz
sink-0079a50028413ce7e95b74505c9e1b144e0626be.zip
Index last
Otherwise we don't index what is going to be stored.
-rw-r--r--examples/maildirresource/maildirresource.cpp4
-rw-r--r--tests/maildirresourcetest.cpp33
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