From 1aa82ab9cfacca1ee9af9f9137caeede55f89230 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 13 Dec 2015 19:21:52 +0100 Subject: Load entities from multiple resources --- tests/clientapitest.cpp | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) (limited to 'tests') diff --git a/tests/clientapitest.cpp b/tests/clientapitest.cpp index 8f956ab..5777e68 100644 --- a/tests/clientapitest.cpp +++ b/tests/clientapitest.cpp @@ -13,12 +13,18 @@ template class DummyResourceFacade : public Akonadi2::StoreFacade { public: - static std::shared_ptr > registerFacade() + static std::shared_ptr > registerFacade(const QByteArray &instanceIdentifier = QByteArray()) { + static QMap > > map; auto facade = std::make_shared >(); + map.insert(instanceIdentifier, facade); + bool alwaysReturnFacade = instanceIdentifier.isEmpty(); Akonadi2::FacadeFactory::instance().registerFacade >("dummyresource", - [facade](const QByteArray &instanceIdentifier) { - return facade; + [alwaysReturnFacade](const QByteArray &instanceIdentifier) { + if (alwaysReturnFacade) { + return map.value(QByteArray()); + } + return map.value(instanceIdentifier); } ); return facade; @@ -38,10 +44,17 @@ public: auto emitter = resultProvider->emitter(); resultProvider->setFetcher([query, resultProvider, this](const typename T::Ptr &parent) { - Trace() << "Running the fetcher"; + if (parent) { + Trace() << "Running the fetcher " << parent->identifier(); + } else { + Trace() << "Running the fetcher."; + } + Trace() << "-------------------------."; for (const auto &res : results) { - qDebug() << "Parent filter " << query.propertyFilter.value("parent").toByteArray() << res->identifier(); - if (!query.propertyFilter.contains("parent") || query.propertyFilter.value("parent").toByteArray() == res->getProperty("parent").toByteArray()) { + qDebug() << "Parent filter " << query.propertyFilter.value("parent").toByteArray() << res->identifier() << res->getProperty("parent").toByteArray(); + auto parentProperty = res->getProperty("parent").toByteArray(); + if ((!parent && parentProperty.isEmpty()) || (parent && parentProperty == parent->identifier()) || query.parentProperty.isEmpty()) { + qDebug() << "Found a hit" << res->identifier(); resultProvider->add(res); } } @@ -180,8 +193,8 @@ private Q_SLOTS: void testModelNestedLive() { auto facade = DummyResourceFacade::registerFacade(); - auto folder = QSharedPointer::create("resource", "id", 0, QSharedPointer::create()); - auto subfolder = QSharedPointer::create("resource", "subId", 0, QSharedPointer::create()); + auto folder = QSharedPointer::create("dummyresource.instance1", "id", 0, QSharedPointer::create()); + auto subfolder = QSharedPointer::create("dummyresource.instance1", "subId", 0, QSharedPointer::create()); subfolder->setProperty("parent", "id"); facade->results << folder << subfolder; ResourceConfig::addResource("dummyresource.instance1", "dummyresource"); @@ -230,6 +243,23 @@ private Q_SLOTS: //TODO: A modification can also be a move } + void testLoadMultiResource() + { + auto facade1 = DummyResourceFacade::registerFacade("dummyresource.instance1"); + facade1->results << QSharedPointer::create("resource1", "id", 0, QSharedPointer::create()); + auto facade2 = DummyResourceFacade::registerFacade("dummyresource.instance2"); + facade2->results << QSharedPointer::create("resource2", "id", 0, QSharedPointer::create()); + ResourceConfig::addResource("dummyresource.instance1", "dummyresource"); + ResourceConfig::addResource("dummyresource.instance2", "dummyresource"); + + Akonadi2::Query query; + query.liveQuery = false; + + auto model = Akonadi2::Store::loadModel(query); + QTRY_VERIFY(model->data(QModelIndex(), Akonadi2::Store::ChildrenFetchedRole).toBool()); + QCOMPARE(model->rowCount(QModelIndex()), 2); + } + }; -- cgit v1.2.3