summaryrefslogtreecommitdiffstats
path: root/tests/clientapitest.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2015-12-13 19:21:52 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2015-12-13 19:21:52 +0100
commit1aa82ab9cfacca1ee9af9f9137caeede55f89230 (patch)
treede1b6e2193fdc4213178da748beb5c388d01af0a /tests/clientapitest.cpp
parent1999bbb377561e6e83c126de536a26df18870970 (diff)
downloadsink-1aa82ab9cfacca1ee9af9f9137caeede55f89230.tar.gz
sink-1aa82ab9cfacca1ee9af9f9137caeede55f89230.zip
Load entities from multiple resources
Diffstat (limited to 'tests/clientapitest.cpp')
-rw-r--r--tests/clientapitest.cpp46
1 files changed, 38 insertions, 8 deletions
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 <typename T>
13class DummyResourceFacade : public Akonadi2::StoreFacade<T> 13class DummyResourceFacade : public Akonadi2::StoreFacade<T>
14{ 14{
15public: 15public:
16 static std::shared_ptr<DummyResourceFacade<T> > registerFacade() 16 static std::shared_ptr<DummyResourceFacade<T> > registerFacade(const QByteArray &instanceIdentifier = QByteArray())
17 { 17 {
18 static QMap<QByteArray, std::shared_ptr<DummyResourceFacade<T> > > map;
18 auto facade = std::make_shared<DummyResourceFacade<T> >(); 19 auto facade = std::make_shared<DummyResourceFacade<T> >();
20 map.insert(instanceIdentifier, facade);
21 bool alwaysReturnFacade = instanceIdentifier.isEmpty();
19 Akonadi2::FacadeFactory::instance().registerFacade<T, DummyResourceFacade<T> >("dummyresource", 22 Akonadi2::FacadeFactory::instance().registerFacade<T, DummyResourceFacade<T> >("dummyresource",
20 [facade](const QByteArray &instanceIdentifier) { 23 [alwaysReturnFacade](const QByteArray &instanceIdentifier) {
21 return facade; 24 if (alwaysReturnFacade) {
25 return map.value(QByteArray());
26 }
27 return map.value(instanceIdentifier);
22 } 28 }
23 ); 29 );
24 return facade; 30 return facade;
@@ -38,10 +44,17 @@ public:
38 auto emitter = resultProvider->emitter(); 44 auto emitter = resultProvider->emitter();
39 45
40 resultProvider->setFetcher([query, resultProvider, this](const typename T::Ptr &parent) { 46 resultProvider->setFetcher([query, resultProvider, this](const typename T::Ptr &parent) {
41 Trace() << "Running the fetcher"; 47 if (parent) {
48 Trace() << "Running the fetcher " << parent->identifier();
49 } else {
50 Trace() << "Running the fetcher.";
51 }
52 Trace() << "-------------------------.";
42 for (const auto &res : results) { 53 for (const auto &res : results) {
43 qDebug() << "Parent filter " << query.propertyFilter.value("parent").toByteArray() << res->identifier(); 54 qDebug() << "Parent filter " << query.propertyFilter.value("parent").toByteArray() << res->identifier() << res->getProperty("parent").toByteArray();
44 if (!query.propertyFilter.contains("parent") || query.propertyFilter.value("parent").toByteArray() == res->getProperty("parent").toByteArray()) { 55 auto parentProperty = res->getProperty("parent").toByteArray();
56 if ((!parent && parentProperty.isEmpty()) || (parent && parentProperty == parent->identifier()) || query.parentProperty.isEmpty()) {
57 qDebug() << "Found a hit" << res->identifier();
45 resultProvider->add(res); 58 resultProvider->add(res);
46 } 59 }
47 } 60 }
@@ -180,8 +193,8 @@ private Q_SLOTS:
180 void testModelNestedLive() 193 void testModelNestedLive()
181 { 194 {
182 auto facade = DummyResourceFacade<Akonadi2::ApplicationDomain::Folder>::registerFacade(); 195 auto facade = DummyResourceFacade<Akonadi2::ApplicationDomain::Folder>::registerFacade();
183 auto folder = QSharedPointer<Akonadi2::ApplicationDomain::Folder>::create("resource", "id", 0, QSharedPointer<Akonadi2::ApplicationDomain::MemoryBufferAdaptor>::create()); 196 auto folder = QSharedPointer<Akonadi2::ApplicationDomain::Folder>::create("dummyresource.instance1", "id", 0, QSharedPointer<Akonadi2::ApplicationDomain::MemoryBufferAdaptor>::create());
184 auto subfolder = QSharedPointer<Akonadi2::ApplicationDomain::Folder>::create("resource", "subId", 0, QSharedPointer<Akonadi2::ApplicationDomain::MemoryBufferAdaptor>::create()); 197 auto subfolder = QSharedPointer<Akonadi2::ApplicationDomain::Folder>::create("dummyresource.instance1", "subId", 0, QSharedPointer<Akonadi2::ApplicationDomain::MemoryBufferAdaptor>::create());
185 subfolder->setProperty("parent", "id"); 198 subfolder->setProperty("parent", "id");
186 facade->results << folder << subfolder; 199 facade->results << folder << subfolder;
187 ResourceConfig::addResource("dummyresource.instance1", "dummyresource"); 200 ResourceConfig::addResource("dummyresource.instance1", "dummyresource");
@@ -230,6 +243,23 @@ private Q_SLOTS:
230 //TODO: A modification can also be a move 243 //TODO: A modification can also be a move
231 } 244 }
232 245
246 void testLoadMultiResource()
247 {
248 auto facade1 = DummyResourceFacade<Akonadi2::ApplicationDomain::Event>::registerFacade("dummyresource.instance1");
249 facade1->results << QSharedPointer<Akonadi2::ApplicationDomain::Event>::create("resource1", "id", 0, QSharedPointer<Akonadi2::ApplicationDomain::MemoryBufferAdaptor>::create());
250 auto facade2 = DummyResourceFacade<Akonadi2::ApplicationDomain::Event>::registerFacade("dummyresource.instance2");
251 facade2->results << QSharedPointer<Akonadi2::ApplicationDomain::Event>::create("resource2", "id", 0, QSharedPointer<Akonadi2::ApplicationDomain::MemoryBufferAdaptor>::create());
252 ResourceConfig::addResource("dummyresource.instance1", "dummyresource");
253 ResourceConfig::addResource("dummyresource.instance2", "dummyresource");
254
255 Akonadi2::Query query;
256 query.liveQuery = false;
257
258 auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::Event>(query);
259 QTRY_VERIFY(model->data(QModelIndex(), Akonadi2::Store::ChildrenFetchedRole).toBool());
260 QCOMPARE(model->rowCount(QModelIndex()), 2);
261 }
262
233 263
234}; 264};
235 265