diff options
Diffstat (limited to 'tests/clientapitest.cpp')
-rw-r--r-- | tests/clientapitest.cpp | 86 |
1 files changed, 51 insertions, 35 deletions
diff --git a/tests/clientapitest.cpp b/tests/clientapitest.cpp index 4883b5e..d76fac8 100644 --- a/tests/clientapitest.cpp +++ b/tests/clientapitest.cpp | |||
@@ -4,7 +4,6 @@ | |||
4 | 4 | ||
5 | #include "clientapi.h" | 5 | #include "clientapi.h" |
6 | #include "facade.h" | 6 | #include "facade.h" |
7 | #include "synclistresult.h" | ||
8 | #include "resourceconfig.h" | 7 | #include "resourceconfig.h" |
9 | #include "modelresult.h" | 8 | #include "modelresult.h" |
10 | #include "resultprovider.h" | 9 | #include "resultprovider.h" |
@@ -28,22 +27,35 @@ public: | |||
28 | KAsync::Job<void> create(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; | 27 | KAsync::Job<void> create(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; |
29 | KAsync::Job<void> modify(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; | 28 | KAsync::Job<void> modify(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; |
30 | KAsync::Job<void> remove(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; | 29 | KAsync::Job<void> remove(const T &domainObject) Q_DECL_OVERRIDE { return KAsync::null<void>(); }; |
31 | KAsync::Job<void> load(const Akonadi2::Query &query, Akonadi2::ResultProviderInterface<typename T::Ptr> &resultProvider) Q_DECL_OVERRIDE | 30 | QPair<KAsync::Job<void>, typename Akonadi2::ResultEmitter<typename T::Ptr>::Ptr > load(const Akonadi2::Query &query) Q_DECL_OVERRIDE |
32 | { | 31 | { |
33 | capturedResultProvider = &resultProvider; | 32 | // capturedResultProvider = &resultProvider; |
34 | resultProvider.setFetcher([query, &resultProvider, this](const typename T::Ptr &) { | 33 | Trace() << "lkjsdflkjsdfljsdfljsdlfj"; |
35 | for (const auto &res : results) { | 34 | |
35 | auto resultProvider = new Akonadi2::ResultProvider<typename T::Ptr>(); | ||
36 | resultProvider->onDone([resultProvider]() { | ||
37 | Trace() << "Result provider is done"; | ||
38 | delete resultProvider; | ||
39 | }); | ||
40 | //We have to do it this way, otherwise we're not setting the fetcher right | ||
41 | auto emitter = resultProvider->emitter(); | ||
42 | |||
43 | resultProvider->setFetcher([query, resultProvider, this](const typename T::Ptr &) { | ||
44 | Trace() << "Running the fetcher"; | ||
45 | for (const auto &res : results) { | ||
36 | qDebug() << "Parent filter " << query.propertyFilter.value("parent").toByteArray() << res->identifier(); | 46 | qDebug() << "Parent filter " << query.propertyFilter.value("parent").toByteArray() << res->identifier(); |
37 | if (!query.propertyFilter.contains("parent") || query.propertyFilter.value("parent").toByteArray() == res->getProperty("parent").toByteArray()) { | 47 | if (!query.propertyFilter.contains("parent") || query.propertyFilter.value("parent").toByteArray() == res->getProperty("parent").toByteArray()) { |
38 | resultProvider.add(res); | 48 | resultProvider->add(res); |
39 | } | 49 | } |
40 | } | 50 | } |
41 | }); | 51 | }); |
42 | return KAsync::null<void>(); | 52 | auto job = KAsync::start<void>([query, resultProvider]() { |
53 | }); | ||
54 | return qMakePair(job, emitter); | ||
43 | } | 55 | } |
44 | 56 | ||
45 | QList<typename T::Ptr> results; | 57 | QList<typename T::Ptr> results; |
46 | Akonadi2::ResultProviderInterface<typename T::Ptr> *capturedResultProvider; | 58 | // Akonadi2::ResultProviderInterface<typename T::Ptr> *capturedResultProvider; |
47 | }; | 59 | }; |
48 | 60 | ||
49 | 61 | ||
@@ -61,24 +73,25 @@ private Q_SLOTS: | |||
61 | { | 73 | { |
62 | Akonadi2::FacadeFactory::instance().resetFactory(); | 74 | Akonadi2::FacadeFactory::instance().resetFactory(); |
63 | ResourceConfig::clear(); | 75 | ResourceConfig::clear(); |
76 | Akonadi2::Log::setDebugOutputLevel(Akonadi2::Log::Trace); | ||
64 | } | 77 | } |
65 | 78 | ||
66 | void testLoad() | 79 | // void testLoad() |
67 | { | 80 | // { |
68 | auto facade = DummyResourceFacade<Akonadi2::ApplicationDomain::Event>::registerFacade(); | 81 | // auto facade = DummyResourceFacade<Akonadi2::ApplicationDomain::Event>::registerFacade(); |
69 | facade->results << QSharedPointer<Akonadi2::ApplicationDomain::Event>::create("resource", "id", 0, QSharedPointer<Akonadi2::ApplicationDomain::MemoryBufferAdaptor>::create()); | 82 | // facade->results << QSharedPointer<Akonadi2::ApplicationDomain::Event>::create("resource", "id", 0, QSharedPointer<Akonadi2::ApplicationDomain::MemoryBufferAdaptor>::create()); |
70 | ResourceConfig::addResource("dummyresource.instance1", "dummyresource"); | 83 | // ResourceConfig::addResource("dummyresource.instance1", "dummyresource"); |
71 | 84 | // | |
72 | Akonadi2::Query query; | 85 | // Akonadi2::Query query; |
73 | query.resources << "dummyresource.instance1"; | 86 | // query.resources << "dummyresource.instance1"; |
74 | query.liveQuery = false; | 87 | // query.liveQuery = false; |
75 | 88 | // | |
76 | async::SyncListResult<Akonadi2::ApplicationDomain::Event::Ptr> result(Akonadi2::Store::load<Akonadi2::ApplicationDomain::Event>(query)); | 89 | // async::SyncListResult<Akonadi2::ApplicationDomain::Event::Ptr> result(Akonadi2::Store::load<Akonadi2::ApplicationDomain::Event>(query)); |
77 | result.exec(); | 90 | // result.exec(); |
78 | QCOMPARE(result.size(), 1); | 91 | // QCOMPARE(result.size(), 1); |
79 | } | 92 | // } |
80 | 93 | // | |
81 | //The query provider is supposed to delete itself | 94 | // //The query provider is supposed to delete itself |
82 | void testQueryLifetime() | 95 | void testQueryLifetime() |
83 | { | 96 | { |
84 | auto facade = DummyResourceFacade<Akonadi2::ApplicationDomain::Event>::registerFacade(); | 97 | auto facade = DummyResourceFacade<Akonadi2::ApplicationDomain::Event>::registerFacade(); |
@@ -90,12 +103,12 @@ private Q_SLOTS: | |||
90 | query.liveQuery = true; | 103 | query.liveQuery = true; |
91 | 104 | ||
92 | { | 105 | { |
93 | async::SyncListResult<Akonadi2::ApplicationDomain::Event::Ptr> result(Akonadi2::Store::load<Akonadi2::ApplicationDomain::Event>(query)); | 106 | auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::Event>(query); |
94 | result.exec(); | 107 | QTRY_COMPARE(model->rowCount(QModelIndex()), 1); |
95 | QCOMPARE(result.size(), 1); | ||
96 | } | 108 | } |
97 | //It's running in a separate thread, so we have to wait for a moment until the query provider deletes itself. | 109 | //It's running in a separate thread, so we have to wait for a moment until the query provider deletes itself. |
98 | // QTRY_VERIFY(!facade->capturedResultProvider); | 110 | // QTRY_VERIFY(!facade->capturedResultProvider); |
111 | QTest::qWait(300); | ||
99 | } | 112 | } |
100 | 113 | ||
101 | //TODO: This test doesn't belong to this testsuite | 114 | //TODO: This test doesn't belong to this testsuite |
@@ -112,18 +125,22 @@ private Q_SLOTS: | |||
112 | { | 125 | { |
113 | Akonadi2::Query query; | 126 | Akonadi2::Query query; |
114 | query.propertyFilter.insert("type", "dummyresource"); | 127 | query.propertyFilter.insert("type", "dummyresource"); |
115 | async::SyncListResult<Akonadi2::ApplicationDomain::AkonadiResource::Ptr> result(Akonadi2::Store::load<Akonadi2::ApplicationDomain::AkonadiResource>(query)); | 128 | // async::SyncListResult<Akonadi2::ApplicationDomain::AkonadiResource::Ptr> result(Akonadi2::Store::load<Akonadi2::ApplicationDomain::AkonadiResource>(query)); |
116 | result.exec(); | 129 | auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::AkonadiResource>(query); |
117 | QCOMPARE(result.size(), 1); | 130 | // result.exec(); |
131 | QTRY_COMPARE(model->rowCount(QModelIndex()), 1); | ||
118 | } | 132 | } |
119 | 133 | ||
120 | Akonadi2::Store::remove(res).exec().waitForFinished(); | 134 | Akonadi2::Store::remove(res).exec().waitForFinished(); |
121 | { | 135 | { |
122 | Akonadi2::Query query; | 136 | Akonadi2::Query query; |
123 | query.propertyFilter.insert("type", "dummyresource"); | 137 | query.propertyFilter.insert("type", "dummyresource"); |
124 | async::SyncListResult<Akonadi2::ApplicationDomain::AkonadiResource::Ptr> result(Akonadi2::Store::load<Akonadi2::ApplicationDomain::AkonadiResource>(query)); | 138 | // async::SyncListResult<Akonadi2::ApplicationDomain::AkonadiResource::Ptr> result(Akonadi2::Store::load<Akonadi2::ApplicationDomain::AkonadiResource>(query)); |
125 | result.exec(); | 139 | auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::AkonadiResource>(query); |
126 | QCOMPARE(result.size(), 0); | 140 | // result.exec(); |
141 | // QCOMPARE(result.size(), 0); | ||
142 | // QTRY_COMPARE(result.size(), 0); | ||
143 | QTRY_COMPARE(model->rowCount(QModelIndex()), 0); | ||
127 | } | 144 | } |
128 | } | 145 | } |
129 | 146 | ||
@@ -138,7 +155,6 @@ private Q_SLOTS: | |||
138 | query.liveQuery = false; | 155 | query.liveQuery = false; |
139 | 156 | ||
140 | auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::Folder>(query); | 157 | auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::Folder>(query); |
141 | model->fetchMore(QModelIndex()); | ||
142 | QTRY_COMPARE(model->rowCount(), 1); | 158 | QTRY_COMPARE(model->rowCount(), 1); |
143 | } | 159 | } |
144 | 160 | ||
@@ -155,9 +171,9 @@ private Q_SLOTS: | |||
155 | Akonadi2::Query query; | 171 | Akonadi2::Query query; |
156 | query.resources << "dummyresource.instance1"; | 172 | query.resources << "dummyresource.instance1"; |
157 | query.liveQuery = false; | 173 | query.liveQuery = false; |
174 | query.parentProperty = "parent"; | ||
158 | 175 | ||
159 | auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::Folder>(query); | 176 | auto model = Akonadi2::Store::loadModel<Akonadi2::ApplicationDomain::Folder>(query); |
160 | model->fetchMore(QModelIndex()); | ||
161 | QTRY_COMPARE(model->rowCount(), 1); | 177 | QTRY_COMPARE(model->rowCount(), 1); |
162 | model->fetchMore(model->index(0, 0)); | 178 | model->fetchMore(model->index(0, 0)); |
163 | QTRY_COMPARE(model->rowCount(model->index(0, 0)), 1); | 179 | QTRY_COMPARE(model->rowCount(model->index(0, 0)), 1); |