diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-09-13 12:42:31 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-09-13 12:42:31 +0200 |
commit | c12a9a09da59b9e418316dba02e6215cb55e47ee (patch) | |
tree | 05498d9a42e399bcca787f40c1fc473fb09e680e /tests/mailthreadtest.cpp | |
parent | 55fe06979ceebe67553135b43aa47e70d931304b (diff) | |
parent | ebdb89b8bb482bbb5ecd544c3d38bef35fc7d820 (diff) | |
download | sink-2cbc37da82bb06757c38f891c465a24219268d3b.tar.gz sink-2cbc37da82bb06757c38f891c465a24219268d3b.zip |
Merge commit 'ebdb89b8bb482bbb5ecd544c3d38bef35fc7d820'v0.4.0
Diffstat (limited to 'tests/mailthreadtest.cpp')
-rw-r--r-- | tests/mailthreadtest.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/mailthreadtest.cpp b/tests/mailthreadtest.cpp index 741eb78..9ed5d83 100644 --- a/tests/mailthreadtest.cpp +++ b/tests/mailthreadtest.cpp | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <QtTest> | 21 | #include <QtTest> |
22 | 22 | ||
23 | #include <QString> | 23 | #include <QString> |
24 | #include <QFile> | ||
24 | #include <KMime/Message> | 25 | #include <KMime/Message> |
25 | 26 | ||
26 | #include "store.h" | 27 | #include "store.h" |
@@ -185,4 +186,67 @@ void MailThreadTest::testIndexInMixedOrder() | |||
185 | /* VERIFYEXEC(ResourceControl::flushReplayQueue(QByteArrayList() << mResourceInstanceIdentifier)); */ | 186 | /* VERIFYEXEC(ResourceControl::flushReplayQueue(QByteArrayList() << mResourceInstanceIdentifier)); */ |
186 | } | 187 | } |
187 | 188 | ||
189 | static QByteArray readMailFromFile(const QString &mailFile) | ||
190 | { | ||
191 | QFile file(QLatin1String(THREADTESTDATAPATH) + QLatin1Char('/') + mailFile); | ||
192 | file.open(QIODevice::ReadOnly); | ||
193 | Q_ASSERT(file.isOpen()); | ||
194 | return file.readAll(); | ||
195 | } | ||
196 | |||
197 | static KMime::Message::Ptr readMail(const QString &mailFile) | ||
198 | { | ||
199 | auto msg = KMime::Message::Ptr::create(); | ||
200 | msg->setContent(readMailFromFile(mailFile)); | ||
201 | msg->parse(); | ||
202 | return msg; | ||
203 | } | ||
204 | |||
205 | void MailThreadTest::testRealWorldThread() | ||
206 | { | ||
207 | auto folder = Folder::create(mResourceInstanceIdentifier); | ||
208 | folder.setName("folder"); | ||
209 | VERIFYEXEC(Store::create(folder)); | ||
210 | |||
211 | auto createMail = [this, folder] (KMime::Message::Ptr msg) { | ||
212 | auto mail = Mail::create(mResourceInstanceIdentifier); | ||
213 | mail.setMimeMessage(msg->encodedContent(true)); | ||
214 | mail.setFolder(folder); | ||
215 | VERIFYEXEC(Store::create(mail)); | ||
216 | }; | ||
217 | |||
218 | createMail(readMail("thread1")); | ||
219 | |||
220 | VERIFYEXEC(ResourceControl::flushMessageQueue(QByteArrayList() << mResourceInstanceIdentifier)); | ||
221 | |||
222 | auto query = Sink::StandardQueries::threadLeaders(folder); | ||
223 | query.resourceFilter(mResourceInstanceIdentifier); | ||
224 | query.request<Mail::Subject>().request<Mail::MimeMessage>().request<Mail::Folder>().request<Mail::Date>(); | ||
225 | |||
226 | //Ensure we find the thread leader | ||
227 | Mail threadLeader = [&] { | ||
228 | auto mails = Store::read<Mail>(query); | ||
229 | Q_ASSERT(mails.size() == 1); | ||
230 | return mails.first(); | ||
231 | }(); | ||
232 | |||
233 | createMail(readMail("thread2")); | ||
234 | createMail(readMail("thread3")); | ||
235 | createMail(readMail("thread4")); | ||
236 | createMail(readMail("thread5")); | ||
237 | createMail(readMail("thread6")); | ||
238 | createMail(readMail("thread7")); | ||
239 | createMail(readMail("thread8")); //This mail is breaking the thread | ||
240 | VERIFYEXEC(ResourceControl::flushMessageQueue(mResourceInstanceIdentifier)); | ||
241 | |||
242 | //Ensure the thread is complete | ||
243 | { | ||
244 | auto query = Sink::StandardQueries::completeThread(threadLeader); | ||
245 | query.request<Mail::Subject>().request<Mail::MimeMessage>().request<Mail::Folder>().request<Mail::Date>(); | ||
246 | |||
247 | auto mails = Store::read<Mail>(query); | ||
248 | QCOMPARE(mails.size(), 8); | ||
249 | } | ||
250 | } | ||
251 | |||
188 | #include "mailthreadtest.moc" | 252 | #include "mailthreadtest.moc" |