diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-04-10 16:11:45 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-04-10 16:11:45 +0200 |
commit | 39b3b6c7ff99f18e8719b28d748ec63adf76808d (patch) | |
tree | 7002af8378b35490046acec8be6ccfbaed1d7eee /examples | |
parent | 7890b7fcb4ffdfc570e306983787bc884bf0f62b (diff) | |
download | sink-39b3b6c7ff99f18e8719b28d748ec63adf76808d.tar.gz sink-39b3b6c7ff99f18e8719b28d748ec63adf76808d.zip |
Don't continue processing the pipeline until we have appended the
message.
Otherwise the processor might think its done before it actually is.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/mailtransportresource/mailtransportresource.cpp | 9 | ||||
-rw-r--r-- | examples/mailtransportresource/tests/mailtransporttest.cpp | 6 |
2 files changed, 7 insertions, 8 deletions
diff --git a/examples/mailtransportresource/mailtransportresource.cpp b/examples/mailtransportresource/mailtransportresource.cpp index f215643..75d9898 100644 --- a/examples/mailtransportresource/mailtransportresource.cpp +++ b/examples/mailtransportresource/mailtransportresource.cpp | |||
@@ -54,7 +54,7 @@ public: | |||
54 | 54 | ||
55 | KAsync::Job<void> send(const ApplicationDomain::Mail &mail, const MailtransportResource::Settings &settings) | 55 | KAsync::Job<void> send(const ApplicationDomain::Mail &mail, const MailtransportResource::Settings &settings) |
56 | { | 56 | { |
57 | return KAsync::start<void>([=] { | 57 | return KAsync::start([=] { |
58 | if (!syncStore().readValue(mail.identifier()).isEmpty()) { | 58 | if (!syncStore().readValue(mail.identifier()).isEmpty()) { |
59 | SinkLog() << "Mail is already sent: " << mail.identifier(); | 59 | SinkLog() << "Mail is already sent: " << mail.identifier(); |
60 | return KAsync::null(); | 60 | return KAsync::null(); |
@@ -105,9 +105,8 @@ public: | |||
105 | query.filter<ApplicationDomain::SinkResource::Account>(resource.getAccount()); | 105 | query.filter<ApplicationDomain::SinkResource::Account>(resource.getAccount()); |
106 | return Store::fetchOne<ApplicationDomain::SinkResource>(query) | 106 | return Store::fetchOne<ApplicationDomain::SinkResource>(query) |
107 | .then([this, modifiedMail](const ApplicationDomain::SinkResource &resource) { | 107 | .then([this, modifiedMail](const ApplicationDomain::SinkResource &resource) { |
108 | //First modify the mail to have the sent property set to true | 108 | //Modify the mail to have the sent property set to true, and move it to the new resource. |
109 | modify(modifiedMail, resource.identifier(), true); | 109 | modify(modifiedMail, resource.identifier(), true); |
110 | return KAsync::null<void>(); | ||
111 | }); | 110 | }); |
112 | }); | 111 | }); |
113 | } | 112 | } |
@@ -117,12 +116,10 @@ public: | |||
117 | return KAsync::start<void>([this]() { | 116 | return KAsync::start<void>([this]() { |
118 | QList<ApplicationDomain::Mail> toSend; | 117 | QList<ApplicationDomain::Mail> toSend; |
119 | SinkLog() << "Looking for mails to send."; | 118 | SinkLog() << "Looking for mails to send."; |
120 | store().readAll<ApplicationDomain::Mail>([&](const ApplicationDomain::Mail &mail) -> bool { | 119 | store().readAll<ApplicationDomain::Mail>([&](const ApplicationDomain::Mail &mail) { |
121 | SinkTrace() << "Found mail: " << mail.identifier(); | ||
122 | if (!mail.getSent()) { | 120 | if (!mail.getSent()) { |
123 | toSend << mail; | 121 | toSend << mail; |
124 | } | 122 | } |
125 | return true; | ||
126 | }); | 123 | }); |
127 | SinkLog() << "Found " << toSend.size() << " mails to send"; | 124 | SinkLog() << "Found " << toSend.size() << " mails to send"; |
128 | auto job = KAsync::null<void>(); | 125 | auto job = KAsync::null<void>(); |
diff --git a/examples/mailtransportresource/tests/mailtransporttest.cpp b/examples/mailtransportresource/tests/mailtransporttest.cpp index 3b848b3..23a61b8 100644 --- a/examples/mailtransportresource/tests/mailtransporttest.cpp +++ b/examples/mailtransportresource/tests/mailtransporttest.cpp | |||
@@ -58,6 +58,7 @@ private slots: | |||
58 | void testSendMail() | 58 | void testSendMail() |
59 | { | 59 | { |
60 | auto message = KMime::Message::Ptr::create(); | 60 | auto message = KMime::Message::Ptr::create(); |
61 | message->messageID(true)->generate("foo.com"); | ||
61 | message->subject(true)->fromUnicodeString(QString::fromLatin1("Foobar"), "utf8"); | 62 | message->subject(true)->fromUnicodeString(QString::fromLatin1("Foobar"), "utf8"); |
62 | message->assemble(); | 63 | message->assemble(); |
63 | 64 | ||
@@ -67,9 +68,10 @@ private slots: | |||
67 | VERIFYEXEC(Store::create(mail)); | 68 | VERIFYEXEC(Store::create(mail)); |
68 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); | 69 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); |
69 | 70 | ||
71 | //FIXME the email is sent already because changereplay kicks of automatically | ||
70 | //Ensure the mail is queryable in the outbox | 72 | //Ensure the mail is queryable in the outbox |
71 | auto mailInOutbox = Store::readOne<ApplicationDomain::Mail>(Query().resourceFilter(mResourceInstanceIdentifier).filter<Mail::Sent>(false).request<Mail::Subject>().request<Mail::Folder>().request<Mail::MimeMessage>().request<Mail::Sent>()); | 73 | // auto mailInOutbox = Store::readOne<ApplicationDomain::Mail>(Query().resourceFilter(mResourceInstanceIdentifier).filter<Mail::Sent>(false).request<Mail::Subject>().request<Mail::Folder>().request<Mail::MimeMessage>().request<Mail::Sent>()); |
72 | QVERIFY(!mailInOutbox.identifier().isEmpty()); | 74 | // QVERIFY(!mailInOutbox.identifier().isEmpty()); |
73 | 75 | ||
74 | //Ensure the mail is sent and moved to the sent mail folder on sync | 76 | //Ensure the mail is sent and moved to the sent mail folder on sync |
75 | VERIFYEXEC(Store::synchronize(Query().resourceFilter(mResourceInstanceIdentifier))); | 77 | VERIFYEXEC(Store::synchronize(Query().resourceFilter(mResourceInstanceIdentifier))); |