diff options
Diffstat (limited to 'tests/clientapitest.cpp')
-rw-r--r-- | tests/clientapitest.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/clientapitest.cpp b/tests/clientapitest.cpp index 78e1d1e..86150ee 100644 --- a/tests/clientapitest.cpp +++ b/tests/clientapitest.cpp | |||
@@ -33,6 +33,7 @@ public: | |||
33 | KAsync::Job<void> create(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; | 33 | KAsync::Job<void> create(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; |
34 | KAsync::Job<void> modify(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; | 34 | KAsync::Job<void> modify(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; |
35 | KAsync::Job<void> remove(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; | 35 | KAsync::Job<void> remove(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; |
36 | KAsync::Job<void> inspect(const Akonadi2::Inspection &) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; | ||
36 | QPair<KAsync::Job<void>, typename Akonadi2::ResultEmitter<typename T::Ptr>::Ptr > load(const Akonadi2::Query &query) Q_DECL_OVERRIDE | 37 | QPair<KAsync::Job<void>, typename Akonadi2::ResultEmitter<typename T::Ptr>::Ptr > load(const Akonadi2::Query &query) Q_DECL_OVERRIDE |
37 | { | 38 | { |
38 | auto resultProvider = new Akonadi2::ResultProvider<typename T::Ptr>(); | 39 | auto resultProvider = new Akonadi2::ResultProvider<typename T::Ptr>(); |
@@ -265,9 +266,38 @@ private Q_SLOTS: | |||
265 | Akonadi2::Query query; | 266 | Akonadi2::Query query; |
266 | query.liveQuery = false; | 267 | query.liveQuery = false; |
267 | 268 | ||
269 | int childrenFetchedCount = 0; | ||
268 | auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::Event>(query); | 270 | auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::Event>(query); |
271 | QObject::connect(model.data(), &QAbstractItemModel::dataChanged, [&childrenFetchedCount](const QModelIndex &, const QModelIndex &, const QVector<int> &roles) { | ||
272 | if (roles.contains(Akonadi2::Store::ChildrenFetchedRole)) { | ||
273 | childrenFetchedCount++; | ||
274 | } | ||
275 | }); | ||
269 | QTRY_VERIFY(model->data(QModelIndex(), Akonadi2::Store::ChildrenFetchedRole).toBool()); | 276 | QTRY_VERIFY(model->data(QModelIndex(), Akonadi2::Store::ChildrenFetchedRole).toBool()); |
270 | QCOMPARE(model->rowCount(QModelIndex()), 2); | 277 | QCOMPARE(model->rowCount(QModelIndex()), 2); |
278 | //Ensure children fetched is only emitted once (when all resources are done) | ||
279 | QTest::qWait(50); | ||
280 | QCOMPARE(childrenFetchedCount, 1); | ||
281 | } | ||
282 | |||
283 | void testImperativeLoad() | ||
284 | { | ||
285 | auto facade = DummyResourceFacade<Akonadi2::ApplicationDomain::Event>::registerFacade(); | ||
286 | facade->results << QSharedPointer<Akonadi2::ApplicationDomain::Event>::create("resource", "id", 0, QSharedPointer<Akonadi2::ApplicationDomain::MemoryBufferAdaptor>::create()); | ||
287 | ResourceConfig::addResource("dummyresource.instance1", "dummyresource"); | ||
288 | |||
289 | Akonadi2::Query query; | ||
290 | query.resources << "dummyresource.instance1"; | ||
291 | query.liveQuery = false; | ||
292 | |||
293 | bool gotValue = false; | ||
294 | auto result = Akonadi2::Store::fetchOne<Akonadi2::ApplicationDomain::Event>(query) | ||
295 | .then<void, Akonadi2::ApplicationDomain::Event>([&gotValue](const Akonadi2::ApplicationDomain::Event &event) { | ||
296 | gotValue = true; | ||
297 | }).exec(); | ||
298 | result.waitForFinished(); | ||
299 | QVERIFY(!result.errorCode()); | ||
300 | QVERIFY(gotValue); | ||
271 | } | 301 | } |
272 | 302 | ||
273 | 303 | ||