summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2018-05-17 15:16:29 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-05-17 15:16:29 +0200
commit93c9ebb5d0654626cb8bf2e6b00a5845b210f82c (patch)
treed333bf90e2a2e25c43b1bc6f514a8df5efa6c38f /tests
parent493aae46b3aeffcdb001f697efdc5a42eba672d8 (diff)
downloadsink-93c9ebb5d0654626cb8bf2e6b00a5845b210f82c.tar.gz
sink-93c9ebb5d0654626cb8bf2e6b00a5845b210f82c.zip
Fixed a readEntity call with empty uid
Filtered entites are still passed through as removal, but if there is no other value for the reduction, the reduction result is empty.
Diffstat (limited to 'tests')
-rw-r--r--tests/querytest.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/querytest.cpp b/tests/querytest.cpp
index 26564b5..fa016a2 100644
--- a/tests/querytest.cpp
+++ b/tests/querytest.cpp
@@ -954,6 +954,60 @@ private slots:
954 QCOMPARE(resetSpy.size(), 0); 954 QCOMPARE(resetSpy.size(), 0);
955 } 955 }
956 956
957 void testFilteredReductionUpdate()
958 {
959 // Setup
960 auto folder1 = Folder::createEntity<Folder>("sink.dummy.instance1");
961 VERIFYEXEC(Sink::Store::create<Folder>(folder1));
962
963 auto folder2 = Folder::createEntity<Folder>("sink.dummy.instance1");
964 VERIFYEXEC(Sink::Store::create<Folder>(folder2));
965
966 // Ensure all local data is processed
967 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1"));
968
969 Query query;
970 query.setId("testFilteredReductionUpdate");
971 query.setFlags(Query::LiveQuery);
972 query.filter<Mail::Folder>(folder1);
973 query.reduce<Mail::Folder>(Query::Reduce::Selector::max<Mail::Date>()).count("count").collect<Mail::Folder>("folders");
974 query.sort<Mail::Date>();
975
976 auto model = Sink::Store::loadModel<Mail>(query);
977 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
978 QCOMPARE(model->rowCount(), 0);
979
980 QSignalSpy insertedSpy(model.data(), &QAbstractItemModel::rowsInserted);
981 QSignalSpy removedSpy(model.data(), &QAbstractItemModel::rowsRemoved);
982 QSignalSpy changedSpy(model.data(), &QAbstractItemModel::dataChanged);
983 QSignalSpy layoutChangedSpy(model.data(), &QAbstractItemModel::layoutChanged);
984 QSignalSpy resetSpy(model.data(), &QAbstractItemModel::modelReset);
985
986 //Ensure we don't end up with a mail in the thread that was filtered
987 //This tests the case of an otherwise emtpy thread on purpose.
988 {
989 auto mail = Mail::createEntity<Mail>("sink.dummy.instance1");
990 mail.setExtractedMessageId("filtered");
991 mail.setFolder(folder2);
992 mail.setExtractedDate(QDateTime{QDate{2017, 2, 3}, QTime{11, 0, 0}});
993 VERIFYEXEC(Sink::Store::create(mail));
994 }
995
996 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1"));
997 QCOMPARE(model->rowCount(), 0);
998
999 //Ensure the non-filtered still get through.
1000 {
1001 auto mail = Mail::createEntity<Mail>("sink.dummy.instance1");
1002 mail.setExtractedMessageId("not-filtered");
1003 mail.setFolder(folder1);
1004 mail.setExtractedDate(QDateTime{QDate{2017, 2, 3}, QTime{11, 0, 0}});
1005 VERIFYEXEC(Sink::Store::create(mail));
1006 }
1007 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1"));
1008 QTRY_COMPARE(model->rowCount(), 1);
1009 }
1010
957 void testBloom() 1011 void testBloom()
958 { 1012 {
959 // Setup 1013 // Setup