From 2cdea00408a48c268c2c74b8c058f984732f75a2 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 4 Jan 2017 13:37:02 +0100 Subject: Don't turn modifications into creations --- tests/querytest.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'tests/querytest.cpp') 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: VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); QTRY_COMPARE(model->rowCount(), 0); } + + void testLivequeryModifcationUpdateInThread() + { + // Setup + auto folder1 = Folder::createEntity("sink.dummy.instance1"); + VERIFYEXEC(Sink::Store::create(folder1)); + + auto folder2 = Folder::createEntity("sink.dummy.instance1"); + VERIFYEXEC(Sink::Store::create(folder2)); + + auto mail1 = Mail::createEntity("sink.dummy.instance1"); + mail1.setUid("mail1"); + mail1.setFolder(folder1); + mail1.setUnread(false); + VERIFYEXEC(Sink::Store::create(mail1)); + + // Ensure all local data is processed + VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); + + Query query; + query.setId("testLivequeryUnmatch"); + query.filter(folder1); + query.reduce(Query::Reduce::Selector::max()).count("count").collect("senders"); + query.sort(); + query.setFlags(Query::LiveQuery); + query.request(); + + auto model = Sink::Store::loadModel(query); + QTRY_COMPARE(model->rowCount(), 1); + + //After the modifcation the mail should have vanished. + { + mail1.setUnread(true); + VERIFYEXEC(Sink::Store::modify(mail1)); + } + VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1")); + QTRY_COMPARE(model->rowCount(), 1); + auto mail = model->data(model->index(0, 0, QModelIndex{}), Sink::Store::DomainObjectRole).value(); + QCOMPARE(mail->getUnread(), true); + } }; QTEST_MAIN(QueryTest) -- cgit v1.2.3