diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/querytest.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/querytest.cpp b/tests/querytest.cpp index 46181a6..92fc1f7 100644 --- a/tests/querytest.cpp +++ b/tests/querytest.cpp | |||
@@ -667,6 +667,46 @@ private slots: | |||
667 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); | 667 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); |
668 | QTRY_COMPARE(model->rowCount(), 0); | 668 | QTRY_COMPARE(model->rowCount(), 0); |
669 | } | 669 | } |
670 | |||
671 | void testLivequeryModifcationUpdateInThread() | ||
672 | { | ||
673 | // Setup | ||
674 | auto folder1 = Folder::createEntity<Folder>("sink.dummy.instance1"); | ||
675 | VERIFYEXEC(Sink::Store::create<Folder>(folder1)); | ||
676 | |||
677 | auto folder2 = Folder::createEntity<Folder>("sink.dummy.instance1"); | ||
678 | VERIFYEXEC(Sink::Store::create<Folder>(folder2)); | ||
679 | |||
680 | auto mail1 = Mail::createEntity<Mail>("sink.dummy.instance1"); | ||
681 | mail1.setUid("mail1"); | ||
682 | mail1.setFolder(folder1); | ||
683 | mail1.setUnread(false); | ||
684 | VERIFYEXEC(Sink::Store::create(mail1)); | ||
685 | |||
686 | // Ensure all local data is processed | ||
687 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); | ||
688 | |||
689 | Query query; | ||
690 | query.setId("testLivequeryUnmatch"); | ||
691 | query.filter<Mail::Folder>(folder1); | ||
692 | query.reduce<Mail::ThreadId>(Query::Reduce::Selector::max<Mail::Date>()).count("count").collect<Mail::Sender>("senders"); | ||
693 | query.sort<Mail::Date>(); | ||
694 | query.setFlags(Query::LiveQuery); | ||
695 | query.request<Mail::Unread>(); | ||
696 | |||
697 | auto model = Sink::Store::loadModel<Mail>(query); | ||
698 | QTRY_COMPARE(model->rowCount(), 1); | ||
699 | |||
700 | //After the modifcation the mail should have vanished. | ||
701 | { | ||
702 | mail1.setUnread(true); | ||
703 | VERIFYEXEC(Sink::Store::modify(mail1)); | ||
704 | } | ||
705 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); | ||
706 | QTRY_COMPARE(model->rowCount(), 1); | ||
707 | auto mail = model->data(model->index(0, 0, QModelIndex{}), Sink::Store::DomainObjectRole).value<Mail::Ptr>(); | ||
708 | QCOMPARE(mail->getUnread(), true); | ||
709 | } | ||
670 | }; | 710 | }; |
671 | 711 | ||
672 | QTEST_MAIN(QueryTest) | 712 | QTEST_MAIN(QueryTest) |