summaryrefslogtreecommitdiffstats
path: root/tests/querytest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/querytest.cpp')
-rw-r--r--tests/querytest.cpp58
1 files changed, 56 insertions, 2 deletions
diff --git a/tests/querytest.cpp b/tests/querytest.cpp
index 0641c0d..328448f 100644
--- a/tests/querytest.cpp
+++ b/tests/querytest.cpp
@@ -731,7 +731,7 @@ private slots:
731 Query query; 731 Query query;
732 query.setId("testLivequeryUnmatch"); 732 query.setId("testLivequeryUnmatch");
733 query.filter<Mail::Folder>(folder1); 733 query.filter<Mail::Folder>(folder1);
734 query.reduce<Mail::ThreadId>(Query::Reduce::Selector::max<Mail::Date>()).count("count").collect<Mail::Sender>("senders"); 734 query.reduce<Mail::ThreadId>(Query::Reduce::Selector::max<Mail::Date>()).count("count").collect<Mail::Folder>("folders");
735 query.sort<Mail::Date>(); 735 query.sort<Mail::Date>();
736 query.setFlags(Query::LiveQuery); 736 query.setFlags(Query::LiveQuery);
737 query.request<Mail::Unread>(); 737 query.request<Mail::Unread>();
@@ -747,7 +747,61 @@ private slots:
747 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); 747 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1"));
748 QTRY_COMPARE(model->rowCount(), 1); 748 QTRY_COMPARE(model->rowCount(), 1);
749 auto mail = model->data(model->index(0, 0, QModelIndex{}), Sink::Store::DomainObjectRole).value<Mail::Ptr>(); 749 auto mail = model->data(model->index(0, 0, QModelIndex{}), Sink::Store::DomainObjectRole).value<Mail::Ptr>();
750 QCOMPARE(mail->getUnread(), true); 750 QTRY_COMPARE(mail->getUnread(), true);
751 QCOMPARE(mail->getProperty("count").toInt(), 1);
752 QCOMPARE(mail->getProperty("folders").toList().size(), 1);
753 }
754
755 void testReductionUpdate()
756 {
757 // Setup
758 auto folder1 = Folder::createEntity<Folder>("sink.dummy.instance1");
759 VERIFYEXEC(Sink::Store::create<Folder>(folder1));
760
761 auto folder2 = Folder::createEntity<Folder>("sink.dummy.instance1");
762 VERIFYEXEC(Sink::Store::create<Folder>(folder2));
763
764 QDateTime now{QDate{2017, 2, 3}, QTime{10, 0, 0}};
765 QDateTime later{QDate{2017, 2, 3}, QTime{11, 0, 0}};
766
767 auto mail1 = Mail::createEntity<Mail>("sink.dummy.instance1");
768 mail1.setExtractedMessageId("mail1");
769 mail1.setFolder(folder1);
770 mail1.setUnread(false);
771 mail1.setExtractedDate(now);
772 VERIFYEXEC(Sink::Store::create(mail1));
773
774 // Ensure all local data is processed
775 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1"));
776
777 Query query;
778 query.setId("testLivequeryUnmatch");
779 query.setFlags(Query::LiveQuery);
780 query.filter<Mail::Folder>(folder1);
781 query.reduce<Mail::Folder>(Query::Reduce::Selector::max<Mail::Date>()).count("count").collect<Mail::Folder>("folders");
782 query.sort<Mail::Date>();
783 query.request<Mail::Unread>();
784 query.request<Mail::MessageId>();
785
786 auto model = Sink::Store::loadModel<Mail>(query);
787 QTRY_COMPARE(model->rowCount(), 1);
788
789 //The leader should change to mail2 after the modification
790 {
791 auto mail2 = Mail::createEntity<Mail>("sink.dummy.instance1");
792 mail2.setExtractedMessageId("mail2");
793 mail2.setFolder(folder1);
794 mail2.setUnread(false);
795 mail2.setExtractedDate(later);
796 VERIFYEXEC(Sink::Store::create(mail2));
797 }
798
799 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1"));
800 QTRY_COMPARE(model->rowCount(), 1);
801 auto mail = model->data(model->index(0, 0, QModelIndex{}), Sink::Store::DomainObjectRole).value<Mail::Ptr>();
802 QTRY_COMPARE(mail->getMessageId(), QByteArray{"mail2"});
803 QCOMPARE(mail->getProperty("count").toInt(), 2);
804 QCOMPARE(mail->getProperty("folders").toList().size(), 2);
751 } 805 }
752 806
753 void testBloom() 807 void testBloom()