summaryrefslogtreecommitdiffstats
path: root/framework/src/tests/maillistmodeltest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/tests/maillistmodeltest.cpp')
-rw-r--r--framework/src/tests/maillistmodeltest.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/framework/src/tests/maillistmodeltest.cpp b/framework/src/tests/maillistmodeltest.cpp
new file mode 100644
index 00000000..1df0556c
--- /dev/null
+++ b/framework/src/tests/maillistmodeltest.cpp
@@ -0,0 +1,67 @@
1#include <QTest>
2#include <QDebug>
3#include <QStandardItemModel>
4#include <sink/test.h>
5#include <sink/store.h>
6#include <sink/resourcecontrol.h>
7#include "maillistmodel.h"
8#include "mailtemplates.h"
9
10class MaillistModelTest : public QObject
11{
12 Q_OBJECT
13private slots:
14
15 void initTestCase()
16 {
17 Sink::Test::initTest();
18 }
19
20 void testMailListModel()
21 {
22 Sink::ApplicationDomain::DummyResource::create("account1");
23
24 using namespace Sink::ApplicationDomain;
25 auto account = ApplicationDomainType::createEntity<SinkAccount>();
26 Sink::Store::create(account).exec().waitForFinished();
27
28 auto resource = Sink::ApplicationDomain::DummyResource::create(account.identifier());
29 Sink::Store::create(resource).exec().waitForFinished();
30
31 auto folder1 = ApplicationDomainType::createEntity<Folder>(resource.identifier());
32 Sink::Store::create(folder1).exec().waitForFinished();
33
34 auto folder2 = ApplicationDomainType::createEntity<Folder>(resource.identifier());
35 Sink::Store::create(folder2).exec().waitForFinished();
36
37
38 auto mail1 = ApplicationDomainType::createEntity<Mail>(resource.identifier());
39 mail1.setFolder(folder1);
40 KMime::Types::Mailbox from;
41 from.fromUnicodeString("from@example.org");
42 auto message = MailTemplates::createMessage({}, {"foo@test.com"}, {}, {}, from, "Subject", "Body", false, {}, {}, {});
43 mail1.setMimeMessage(message->encodedContent(true));
44 Sink::Store::create(mail1).exec().waitForFinished();
45
46 auto mail2 = ApplicationDomainType::createEntity<Mail>(resource.identifier());
47 mail2.setFolder(folder2);
48 Sink::Store::create(mail2).exec().waitForFinished();
49
50 Sink::ResourceControl::flushMessageQueue(resource.identifier()).exec().waitForFinished();
51
52 MailListModel model;
53 model.setParentFolder(QVariant::fromValue(Folder::Ptr::create(folder1)));
54 QTRY_COMPARE(model.rowCount({}), 1);
55
56 {
57 auto idx = model.index(0, 0, {});
58 auto mail = idx.data(MailListModel::DomainObject).value<Mail::Ptr>();
59 QVERIFY(mail);
60 QVERIFY(!mail->getSubject().isEmpty());
61 QVERIFY(mail->getFullPayloadAvailable());
62 }
63 }
64};
65
66QTEST_MAIN(MaillistModelTest)
67#include "maillistmodeltest.moc"