diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-12-13 19:21:52 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-12-13 19:21:52 +0100 |
commit | 1aa82ab9cfacca1ee9af9f9137caeede55f89230 (patch) | |
tree | de1b6e2193fdc4213178da748beb5c388d01af0a /tests/clientapitest.cpp | |
parent | 1999bbb377561e6e83c126de536a26df18870970 (diff) | |
download | sink-1aa82ab9cfacca1ee9af9f9137caeede55f89230.tar.gz sink-1aa82ab9cfacca1ee9af9f9137caeede55f89230.zip |
Load entities from multiple resources
Diffstat (limited to 'tests/clientapitest.cpp')
-rw-r--r-- | tests/clientapitest.cpp | 46 |
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> | |||
13 | class DummyResourceFacade : public Akonadi2::StoreFacade<T> | 13 | class DummyResourceFacade : public Akonadi2::StoreFacade<T> |
14 | { | 14 | { |
15 | public: | 15 | public: |
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 | ||