From 6f1d3437b3bdd3ccde1243ceddf19f0c0fb5afda Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 9 Oct 2015 18:51:04 +0200 Subject: Modification and removal in results Now we just need to ensure that equality is tested using the ApplicationDomainType::identifier --- tests/genericfacadetest.cpp | 79 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) (limited to 'tests/genericfacadetest.cpp') diff --git a/tests/genericfacadetest.cpp b/tests/genericfacadetest.cpp index f21de70..e9c1a94 100644 --- a/tests/genericfacadetest.cpp +++ b/tests/genericfacadetest.cpp @@ -30,10 +30,18 @@ public: for (const auto &res : mResults) { resultProvider->add(res); } + for (const auto &res : mModifications) { + resultProvider->modify(res); + } + for (const auto &res : mRemovals) { + resultProvider->remove(res); + } return mLatestRevision; } QList mResults; + QList mModifications; + QList mRemovals; qint64 mLatestRevision; }; @@ -126,9 +134,78 @@ private Q_SLOTS: resultSet->initialResultSetComplete(); result.exec(); - // QTRY_COMPARE(result.size(), 2); QCOMPARE(result.size(), 2); } + + void testLiveQueryModify() + { + Akonadi2::Query query; + query.liveQuery = true; + + auto resultSet = QSharedPointer >::create(); + auto storage = QSharedPointer::create("identifier", QSharedPointer::create(), "bufferType"); + auto resourceAccess = QSharedPointer::create(); + auto entity = QSharedPointer::create("resource", "id2", 0, QSharedPointer::create()); + entity->setProperty("test", "test1"); + storage->mResults << entity; + TestResourceFacade facade("identifier", storage, resourceAccess); + + async::SyncListResult result(resultSet->emitter()); + + facade.load(query, resultSet).exec().waitForFinished(); + resultSet->initialResultSetComplete(); + + result.exec(); + QCOMPARE(result.size(), 1); + + //Modify the entity again + storage->mResults.clear(); + entity = QSharedPointer::create("resource", "id2", 0, QSharedPointer::create()); + entity->setProperty("test", "test2"); + storage->mModifications << entity; + storage->mLatestRevision = 2; + resourceAccess->emit revisionChanged(2); + + //Hack to get event loop in synclistresult to abort again + resultSet->initialResultSetComplete(); + result.exec(); + + QCOMPARE(result.size(), 1); + QCOMPARE(result.first()->getProperty("test").toByteArray(), QByteArray("test2")); + } + + void testLiveQueryRemove() + { + Akonadi2::Query query; + query.liveQuery = true; + + auto resultSet = QSharedPointer >::create(); + auto storage = QSharedPointer::create("identifier", QSharedPointer::create(), "bufferType"); + auto resourceAccess = QSharedPointer::create(); + auto entity = QSharedPointer::create("resource", "id2", 0, QSharedPointer()); + storage->mResults << entity; + TestResourceFacade facade("identifier", storage, resourceAccess); + + async::SyncListResult result(resultSet->emitter()); + + facade.load(query, resultSet).exec().waitForFinished(); + resultSet->initialResultSetComplete(); + + result.exec(); + QCOMPARE(result.size(), 1); + + //Remove the entity again + storage->mResults.clear(); + storage->mRemovals << entity; + storage->mLatestRevision = 2; + resourceAccess->emit revisionChanged(2); + + //Hack to get event loop in synclistresult to abort again + resultSet->initialResultSetComplete(); + result.exec(); + + QCOMPARE(result.size(), 0); + } }; QTEST_MAIN(GenericFacadeTest) -- cgit v1.2.3