diff options
-rw-r--r-- | common/domain/applicationdomaintype.h | 1 | ||||
-rw-r--r-- | common/domain/mail.fbs | 1 | ||||
-rw-r--r-- | tests/mailtest.cpp | 68 | ||||
-rw-r--r-- | tests/mailtest.h | 2 |
4 files changed, 70 insertions, 2 deletions
diff --git a/common/domain/applicationdomaintype.h b/common/domain/applicationdomaintype.h index 72ac480..12a9e56 100644 --- a/common/domain/applicationdomaintype.h +++ b/common/domain/applicationdomaintype.h | |||
@@ -210,6 +210,7 @@ struct SINK_EXPORT Mail : public Entity { | |||
210 | SINK_REFERENCE_PROPERTY(Folder, Folder, folder); | 210 | SINK_REFERENCE_PROPERTY(Folder, Folder, folder); |
211 | SINK_BLOB_PROPERTY(MimeMessage, mimeMessage); | 211 | SINK_BLOB_PROPERTY(MimeMessage, mimeMessage); |
212 | SINK_PROPERTY(bool, Draft, draft); | 212 | SINK_PROPERTY(bool, Draft, draft); |
213 | SINK_PROPERTY(bool, Trash, trash); | ||
213 | }; | 214 | }; |
214 | 215 | ||
215 | /** | 216 | /** |
diff --git a/common/domain/mail.fbs b/common/domain/mail.fbs index addc7c4..3a84ca1 100644 --- a/common/domain/mail.fbs +++ b/common/domain/mail.fbs | |||
@@ -11,6 +11,7 @@ table Mail { | |||
11 | important:bool = false; | 11 | important:bool = false; |
12 | mimeMessage:string; | 12 | mimeMessage:string; |
13 | draft:bool = false; | 13 | draft:bool = false; |
14 | trash:bool = false; | ||
14 | } | 15 | } |
15 | 16 | ||
16 | root_type Mail; | 17 | root_type Mail; |
diff --git a/tests/mailtest.cpp b/tests/mailtest.cpp index 4e36517..6dfe901 100644 --- a/tests/mailtest.cpp +++ b/tests/mailtest.cpp | |||
@@ -402,6 +402,70 @@ void MailTest::testModifyMailToDraft() | |||
402 | VERIFYEXEC(Store::create(mail)); | 402 | VERIFYEXEC(Store::create(mail)); |
403 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); | 403 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); |
404 | 404 | ||
405 | auto modifiedMail = Store::readOne<ApplicationDomain::Mail>(Query::IdentityFilter(mail).request<Mail::MimeMessage>().request<Mail::Folder>()); | ||
406 | // ApplicationDomain::Mail modifiedMail; | ||
407 | // { | ||
408 | // auto job = Store::fetchOne<ApplicationDomain::Mail>(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << Mail::MimeMessage::name << Mail::Folder::name)) | ||
409 | // .then<void, ApplicationDomain::Mail>([&](const ApplicationDomain::Mail &mail) { | ||
410 | // modifiedMail = mail; | ||
411 | // }); | ||
412 | // VERIFYEXEC(job); | ||
413 | // } | ||
414 | modifiedMail.setDraft(true); | ||
415 | VERIFYEXEC(Store::modify(modifiedMail)); | ||
416 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); | ||
417 | VERIFYEXEC(ResourceControl::flushReplayQueue(QByteArrayList() << mResourceInstanceIdentifier)); | ||
418 | |||
419 | QByteArray folderIdentifier; | ||
420 | auto job = Store::fetchOne<ApplicationDomain::Mail>(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << Mail::MimeMessage::name << Mail::Folder::name)) | ||
421 | .then<void, ApplicationDomain::Mail>([&](const ApplicationDomain::Mail &mail) { | ||
422 | folderIdentifier = mail.getProperty("folder").toByteArray(); | ||
423 | QVERIFY(!folderIdentifier.isEmpty()); | ||
424 | }); | ||
425 | VERIFYEXEC(job); | ||
426 | |||
427 | //Ensure the folder is also existing | ||
428 | { | ||
429 | ApplicationDomain::Folder folder; | ||
430 | Query query; | ||
431 | query.ids << folderIdentifier; | ||
432 | query.request<Folder::SpecialPurpose>(); | ||
433 | auto job = Store::fetchAll<ApplicationDomain::Folder>(Query::IdentityFilter(folderIdentifier)) | ||
434 | .then<void, QList<ApplicationDomain::Folder::Ptr> >([&](const QList<ApplicationDomain::Folder::Ptr> &folders) { | ||
435 | QCOMPARE(folders.size(), 1); | ||
436 | folder = *folders.first(); | ||
437 | QVERIFY(folder.getSpecialPurpose().contains("drafts")); | ||
438 | }); | ||
439 | VERIFYEXEC(job); | ||
440 | VERIFYEXEC(ResourceControl::inspect<ApplicationDomain::Folder>(ResourceControl::Inspection::ExistenceInspection(folder, true))); | ||
441 | } | ||
442 | VERIFYEXEC(ResourceControl::inspect<ApplicationDomain::Mail>(ResourceControl::Inspection::ExistenceInspection(mail, true))); | ||
443 | } | ||
444 | |||
445 | void MailTest::testModifyMailToTrash() | ||
446 | { | ||
447 | if (!mCapabilities.contains(ResourceCapabilities::Mail::trash)) { | ||
448 | QSKIP("Resource doesn't have the trash capability"); | ||
449 | } | ||
450 | |||
451 | auto folder = Folder::create(mResourceInstanceIdentifier); | ||
452 | folder.setName("sdljldskjf"); | ||
453 | VERIFYEXEC(Store::create(folder)); | ||
454 | |||
455 | auto message = KMime::Message::Ptr::create(); | ||
456 | message->subject(true)->fromUnicodeString(QString::fromLatin1("Foobar"), "utf8"); | ||
457 | message->assemble(); | ||
458 | |||
459 | auto mail = ApplicationDomain::Mail::create(mResourceInstanceIdentifier); | ||
460 | mail.setMimeMessage(message->encodedContent()); | ||
461 | mail.setTrash(false); | ||
462 | mail.setFolder(folder); | ||
463 | |||
464 | VERIFYEXEC(Store::create(mail)); | ||
465 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); | ||
466 | |||
467 | // auto modifiedMail = Store::read<ApplicationDomain::Mail>(Query::IdentityFilter(mail).request<Mail::MimeMessage>().request<Mail::Folder>()).value(); | ||
468 | |||
405 | ApplicationDomain::Mail modifiedMail; | 469 | ApplicationDomain::Mail modifiedMail; |
406 | { | 470 | { |
407 | auto job = Store::fetchOne<ApplicationDomain::Mail>(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << Mail::MimeMessage::name << Mail::Folder::name)) | 471 | auto job = Store::fetchOne<ApplicationDomain::Mail>(Query::IdentityFilter(mail.identifier()) + Query::RequestedProperties(QByteArrayList() << Mail::MimeMessage::name << Mail::Folder::name)) |
@@ -410,7 +474,7 @@ void MailTest::testModifyMailToDraft() | |||
410 | }); | 474 | }); |
411 | VERIFYEXEC(job); | 475 | VERIFYEXEC(job); |
412 | } | 476 | } |
413 | modifiedMail.setDraft(true); | 477 | modifiedMail.setTrash(true); |
414 | VERIFYEXEC(Store::modify(modifiedMail)); | 478 | VERIFYEXEC(Store::modify(modifiedMail)); |
415 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); | 479 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); |
416 | VERIFYEXEC(ResourceControl::flushReplayQueue(QByteArrayList() << mResourceInstanceIdentifier)); | 480 | VERIFYEXEC(ResourceControl::flushReplayQueue(QByteArrayList() << mResourceInstanceIdentifier)); |
@@ -433,7 +497,7 @@ void MailTest::testModifyMailToDraft() | |||
433 | .then<void, QList<ApplicationDomain::Folder::Ptr> >([&](const QList<ApplicationDomain::Folder::Ptr> &folders) { | 497 | .then<void, QList<ApplicationDomain::Folder::Ptr> >([&](const QList<ApplicationDomain::Folder::Ptr> &folders) { |
434 | QCOMPARE(folders.size(), 1); | 498 | QCOMPARE(folders.size(), 1); |
435 | folder = *folders.first(); | 499 | folder = *folders.first(); |
436 | QVERIFY(folder.getSpecialPurpose().contains("drafts")); | 500 | QVERIFY(folder.getSpecialPurpose().contains("trash")); |
437 | }); | 501 | }); |
438 | VERIFYEXEC(job); | 502 | VERIFYEXEC(job); |
439 | VERIFYEXEC(ResourceControl::inspect<ApplicationDomain::Folder>(ResourceControl::Inspection::ExistenceInspection(folder, true))); | 503 | VERIFYEXEC(ResourceControl::inspect<ApplicationDomain::Folder>(ResourceControl::Inspection::ExistenceInspection(folder, true))); |
diff --git a/tests/mailtest.h b/tests/mailtest.h index 3de5e1f..16d5d73 100644 --- a/tests/mailtest.h +++ b/tests/mailtest.h | |||
@@ -69,6 +69,8 @@ private slots: | |||
69 | 69 | ||
70 | void testCreateDraft(); | 70 | void testCreateDraft(); |
71 | void testModifyMailToDraft(); | 71 | void testModifyMailToDraft(); |
72 | |||
73 | void testModifyMailToTrash(); | ||
72 | }; | 74 | }; |
73 | 75 | ||
74 | } | 76 | } |