summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-04 13:37:02 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-04 13:37:02 +0100
commit2cdea00408a48c268c2c74b8c058f984732f75a2 (patch)
treea3ed9a5cc9cea2dda250e320cf80feae65d63769
parenta6c3e00395d40b1daeccd6ca8335e6419c147ee0 (diff)
downloadsink-2cdea00408a48c268c2c74b8c058f984732f75a2.tar.gz
sink-2cdea00408a48c268c2c74b8c058f984732f75a2.zip
Don't turn modifications into creations
-rw-r--r--common/datastorequery.cpp2
-rw-r--r--tests/querytest.cpp40
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
672QTEST_MAIN(QueryTest) 712QTEST_MAIN(QueryTest)