summaryrefslogtreecommitdiffstats
path: root/tests/querytest.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-03-19 12:28:17 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-03-19 12:28:17 +0100
commita16ae6c64b75706f9663fb27510a73d1a6a29de8 (patch)
tree2462aef115c34b652dbd7d76d66b0369fcae3763 /tests/querytest.cpp
parent6fe54c0932d685b63c1f9cc76611ae2aa2fb42ae (diff)
downloadsink-a16ae6c64b75706f9663fb27510a73d1a6a29de8.tar.gz
sink-a16ae6c64b75706f9663fb27510a73d1a6a29de8.zip
Handle filtered thread-leader
Diffstat (limited to 'tests/querytest.cpp')
-rw-r--r--tests/querytest.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/querytest.cpp b/tests/querytest.cpp
index bd3b927..f639d94 100644
--- a/tests/querytest.cpp
+++ b/tests/querytest.cpp
@@ -1042,6 +1042,71 @@ private slots:
1042 QCOMPARE(layoutChangedSpy.size(), 0); 1042 QCOMPARE(layoutChangedSpy.size(), 0);
1043 QCOMPARE(resetSpy.size(), 0); 1043 QCOMPARE(resetSpy.size(), 0);
1044 } 1044 }
1045
1046 /*
1047 * Ensure that we handle the situation properly if the thread-leader doesn't match a property filter.
1048 */
1049 void testFilteredThreadLeader()
1050 {
1051 // Setup
1052 auto folder1 = Folder::createEntity<Folder>("sink.dummy.instance1");
1053 VERIFYEXEC(Sink::Store::create<Folder>(folder1));
1054
1055 auto folder2 = Folder::createEntity<Folder>("sink.dummy.instance1");
1056 VERIFYEXEC(Sink::Store::create<Folder>(folder2));
1057
1058 QDateTime earlier{QDate{2017, 2, 3}, QTime{9, 0, 0}};
1059 QDateTime now{QDate{2017, 2, 3}, QTime{10, 0, 0}};
1060 QDateTime later{QDate{2017, 2, 3}, QTime{11, 0, 0}};
1061
1062 {
1063 auto mail1 = Mail::createEntity<Mail>("sink.dummy.instance1");
1064 mail1.setExtractedMessageId("mail1");
1065 mail1.setFolder(folder1);
1066 mail1.setExtractedDate(now);
1067 mail1.setImportant(false);
1068 VERIFYEXEC(Sink::Store::create(mail1));
1069 }
1070 {
1071 auto mail2 = Mail::createEntity<Mail>("sink.dummy.instance1");
1072 mail2.setExtractedMessageId("mail2");
1073 mail2.setFolder(folder1);
1074 mail2.setExtractedDate(earlier);
1075 mail2.setImportant(false);
1076 VERIFYEXEC(Sink::Store::create(mail2));
1077 }
1078 {
1079 auto mail3 = Mail::createEntity<Mail>("sink.dummy.instance1");
1080 mail3.setExtractedMessageId("mail3");
1081 mail3.setFolder(folder1);
1082 mail3.setExtractedDate(later);
1083 mail3.setImportant(true);
1084 VERIFYEXEC(Sink::Store::create(mail3));
1085 }
1086
1087 // Ensure all local data is processed
1088 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1"));
1089
1090 Query query;
1091 query.setId("testLivequeryThreadleaderChange");
1092 query.setFlags(Query::LiveQuery);
1093 query.reduce<Mail::Folder>(Query::Reduce::Selector::max<Mail::Date>()).count("count").collect<Mail::Folder>("folders");
1094 query.sort<Mail::Date>();
1095 query.request<Mail::MessageId>();
1096 query.filter<Mail::Important>(false);
1097
1098 auto model = Sink::Store::loadModel<Mail>(query);
1099 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
1100
1101 QCOMPARE(model->rowCount(), 1);
1102
1103 {
1104 auto mail = model->data(model->index(0, 0, QModelIndex{}), Sink::Store::DomainObjectRole).value<Mail::Ptr>();
1105 QCOMPARE(mail->getMessageId(), QByteArray{"mail1"});
1106 QCOMPARE(mail->getProperty("count").toInt(), 2);
1107 QCOMPARE(mail->getProperty("folders").toList().size(), 2);
1108 }
1109 }
1045}; 1110};
1046 1111
1047QTEST_MAIN(QueryTest) 1112QTEST_MAIN(QueryTest)