diff options
-rw-r--r-- | common/datastorequery.cpp | 2 | ||||
-rw-r--r-- | tests/querytest.cpp | 40 |
2 files changed, 41 insertions, 1 deletions
diff --git a/common/datastorequery.cpp b/common/datastorequery.cpp index 8bed015..82a396e 100644 --- a/common/datastorequery.cpp +++ b/common/datastorequery.cpp | |||
@@ -262,7 +262,7 @@ public: | |||
262 | } | 262 | } |
263 | 263 | ||
264 | readEntity(selectionResult, [&, this](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation operation) { | 264 | readEntity(selectionResult, [&, this](const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation operation) { |
265 | callback({entity, Sink::Operation_Creation, aggregateValues}); | 265 | callback({entity, operation, aggregateValues}); |
266 | foundValue = true; | 266 | foundValue = true; |
267 | }); | 267 | }); |
268 | } | 268 | } |
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) |