Changeset View
Changeset View
Standalone View
Standalone View
tests/units/akonadi/akonadicontextrepositorytest.cpp
Show First 20 Lines • Show All 79 Lines • ▼ Show 20 Line(s) | 79 | { | |||
---|---|---|---|---|---|
80 | // GIVEN | 80 | // GIVEN | ||
81 | Akonadi::Item contextItem; | 81 | Akonadi::Item contextItem; | ||
82 | contextItem.setId(42); | 82 | contextItem.setId(42); | ||
83 | auto context = Domain::Context::Ptr::create(); | 83 | auto context = Domain::Context::Ptr::create(); | ||
84 | 84 | | |||
85 | // A mock job | 85 | // A mock job | ||
86 | auto itemModifyJob = new FakeJob(this); | 86 | auto itemModifyJob = new FakeJob(this); | ||
87 | 87 | | |||
88 | // Storage mock returning the item modify job | | |||
89 | Utils::MockObject<Akonadi::StorageInterface> storageMock; | 88 | Utils::MockObject<Akonadi::StorageInterface> storageMock; | ||
90 | storageMock(&Akonadi::StorageInterface::updateItem).when(contextItem, nullptr) | 89 | Utils::MockObject<Akonadi::SerializerInterface> serializerMock; | ||
90 | QScopedPointer<Akonadi::ContextRepository> repository(new Akonadi::ContextRepository(storageMock.getInstance(), | ||||
91 | serializerMock.getInstance())); | ||||
92 | | ||||
93 | // Storage mock returning the item modify job | ||||
94 | storageMock(&Akonadi::StorageInterface::updateItem).when(contextItem, repository.get()) | ||||
91 | .thenReturn(itemModifyJob); | 95 | .thenReturn(itemModifyJob); | ||
92 | 96 | | |||
93 | // Serializer mock | 97 | // Serializer mock | ||
94 | Utils::MockObject<Akonadi::SerializerInterface> serializerMock; | | |||
95 | serializerMock(&Akonadi::SerializerInterface::createItemFromContext).when(context).thenReturn(contextItem); | 98 | serializerMock(&Akonadi::SerializerInterface::createItemFromContext).when(context).thenReturn(contextItem); | ||
96 | 99 | | |||
97 | // WHEN | 100 | // WHEN | ||
98 | QScopedPointer<Akonadi::ContextRepository> repository(new Akonadi::ContextRepository(storageMock.getInstance(), | | |||
99 | serializerMock.getInstance())); | | |||
100 | | ||||
101 | repository->update(context)->exec(); | 101 | repository->update(context)->exec(); | ||
102 | 102 | | |||
103 | // THEN | 103 | // THEN | ||
104 | QVERIFY(serializerMock(&Akonadi::SerializerInterface::createItemFromContext).when(context).exactly(1)); | 104 | QVERIFY(serializerMock(&Akonadi::SerializerInterface::createItemFromContext).when(context).exactly(1)); | ||
105 | QVERIFY(storageMock(&Akonadi::StorageInterface::updateItem).when(contextItem, nullptr).exactly(1)); | 105 | QVERIFY(storageMock(&Akonadi::StorageInterface::updateItem).when(contextItem, repository.get()).exactly(1)); | ||
106 | } | 106 | } | ||
107 | 107 | | |||
108 | void shouldRemoveContext() | 108 | void shouldRemoveContext() | ||
109 | { | 109 | { | ||
110 | // GIVEN | 110 | // GIVEN | ||
111 | Akonadi::Item contextItem; | 111 | Akonadi::Item contextItem; | ||
112 | contextItem.setId(42); | 112 | contextItem.setId(42); | ||
113 | auto context = Domain::Context::Ptr::create(); | 113 | auto context = Domain::Context::Ptr::create(); | ||
▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Line(s) | 165 | { | |||
177 | Utils::MockObject<Akonadi::StorageInterface> storageMock; | 177 | Utils::MockObject<Akonadi::StorageInterface> storageMock; | ||
178 | Utils::MockObject<Akonadi::SerializerInterface> serializerMock; | 178 | Utils::MockObject<Akonadi::SerializerInterface> serializerMock; | ||
179 | QScopedPointer<Akonadi::ContextRepository> repository(new Akonadi::ContextRepository(storageMock.getInstance(), | 179 | QScopedPointer<Akonadi::ContextRepository> repository(new Akonadi::ContextRepository(storageMock.getInstance(), | ||
180 | serializerMock.getInstance())); | 180 | serializerMock.getInstance())); | ||
181 | 181 | | |||
182 | // Storage mock returning the create job | 182 | // Storage mock returning the create job | ||
183 | storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()) | 183 | storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()) | ||
184 | .thenReturn(itemFetchJob); | 184 | .thenReturn(itemFetchJob); | ||
185 | storageMock(&Akonadi::StorageInterface::updateItem).when(item, nullptr) | 185 | storageMock(&Akonadi::StorageInterface::updateItem).when(item, repository.get()) | ||
186 | .thenReturn(itemModifyJob); | 186 | .thenReturn(itemModifyJob); | ||
187 | 187 | | |||
188 | // Serializer mock returning the item for the task | 188 | // Serializer mock returning the item for the task | ||
189 | serializerMock(&Akonadi::SerializerInterface::createItemFromTask).when(task) | 189 | serializerMock(&Akonadi::SerializerInterface::createItemFromTask).when(task) | ||
190 | .thenReturn(item); | 190 | .thenReturn(item); | ||
191 | serializerMock(&Akonadi::SerializerInterface::addContextToTask).when(context, item) | 191 | serializerMock(&Akonadi::SerializerInterface::addContextToTask).when(context, item) | ||
192 | .thenReturn(); | 192 | .thenReturn(); | ||
193 | 193 | | |||
194 | // WHEN | 194 | // WHEN | ||
195 | auto associateJob = repository->associate(context, task); | 195 | auto associateJob = repository->associate(context, task); | ||
196 | if (execJob) | 196 | if (execJob) | ||
197 | associateJob->exec(); | 197 | associateJob->exec(); | ||
198 | 198 | | |||
199 | // THEN | 199 | // THEN | ||
200 | QVERIFY(storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()).exactly(1)); | 200 | QVERIFY(storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()).exactly(1)); | ||
201 | if (execJob) { | 201 | if (execJob) { | ||
202 | QVERIFY(serializerMock(&Akonadi::SerializerInterface::createItemFromTask).when(task).exactly(1)); | 202 | QVERIFY(serializerMock(&Akonadi::SerializerInterface::createItemFromTask).when(task).exactly(1)); | ||
203 | QVERIFY(serializerMock(&Akonadi::SerializerInterface::addContextToTask).when(context, item).exactly(1)); | 203 | QVERIFY(serializerMock(&Akonadi::SerializerInterface::addContextToTask).when(context, item).exactly(1)); | ||
204 | QVERIFY(storageMock(&Akonadi::StorageInterface::updateItem).when(item, nullptr).exactly(1)); | 204 | QVERIFY(storageMock(&Akonadi::StorageInterface::updateItem).when(item, repository.get()).exactly(1)); | ||
205 | } | 205 | } | ||
206 | } | 206 | } | ||
207 | 207 | | |||
208 | void shoudDissociateTaskFromContext_data() | 208 | void shoudDissociateTaskFromContext_data() | ||
209 | { | 209 | { | ||
210 | QTest::addColumn<Akonadi::Item>("item"); | 210 | QTest::addColumn<Akonadi::Item>("item"); | ||
211 | QTest::addColumn<Domain::Context::Ptr>("context"); | 211 | QTest::addColumn<Domain::Context::Ptr>("context"); | ||
212 | QTest::addColumn<Domain::Task::Ptr>("task"); | 212 | QTest::addColumn<Domain::Task::Ptr>("task"); | ||
Show All 28 Lines | 231 | { | |||
241 | Utils::MockObject<Akonadi::StorageInterface> storageMock; | 241 | Utils::MockObject<Akonadi::StorageInterface> storageMock; | ||
242 | Utils::MockObject<Akonadi::SerializerInterface> serializerMock; | 242 | Utils::MockObject<Akonadi::SerializerInterface> serializerMock; | ||
243 | QScopedPointer<Akonadi::ContextRepository> repository(new Akonadi::ContextRepository(storageMock.getInstance(), | 243 | QScopedPointer<Akonadi::ContextRepository> repository(new Akonadi::ContextRepository(storageMock.getInstance(), | ||
244 | serializerMock.getInstance())); | 244 | serializerMock.getInstance())); | ||
245 | 245 | | |||
246 | // Storage mock returning the create job | 246 | // Storage mock returning the create job | ||
247 | storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()) | 247 | storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()) | ||
248 | .thenReturn(itemFetchJob); | 248 | .thenReturn(itemFetchJob); | ||
249 | storageMock(&Akonadi::StorageInterface::updateItem).when(item, nullptr) | 249 | storageMock(&Akonadi::StorageInterface::updateItem).when(item, repository.get()) | ||
250 | .thenReturn(itemModifyJob); | 250 | .thenReturn(itemModifyJob); | ||
251 | 251 | | |||
252 | // Serializer mock returning the item for the task | 252 | // Serializer mock returning the item for the task | ||
253 | serializerMock(&Akonadi::SerializerInterface::createItemFromTask).when(task) | 253 | serializerMock(&Akonadi::SerializerInterface::createItemFromTask).when(task) | ||
254 | .thenReturn(item); | 254 | .thenReturn(item); | ||
255 | serializerMock(&Akonadi::SerializerInterface::removeContextFromTask).when(context, item) | 255 | serializerMock(&Akonadi::SerializerInterface::removeContextFromTask).when(context, item) | ||
256 | .thenReturn(); | 256 | .thenReturn(); | ||
257 | 257 | | |||
258 | // WHEN | 258 | // WHEN | ||
259 | auto dissociateJob = repository->dissociate(context, task); | 259 | auto dissociateJob = repository->dissociate(context, task); | ||
260 | 260 | | |||
261 | if (execJob) | 261 | if (execJob) | ||
262 | dissociateJob->exec(); | 262 | dissociateJob->exec(); | ||
263 | 263 | | |||
264 | // THEN | 264 | // THEN | ||
265 | QVERIFY(storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()).exactly(1)); | 265 | QVERIFY(storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()).exactly(1)); | ||
266 | if (execJob) { | 266 | if (execJob) { | ||
267 | QVERIFY(serializerMock(&Akonadi::SerializerInterface::removeContextFromTask).when(context, item).exactly(1)); | 267 | QVERIFY(serializerMock(&Akonadi::SerializerInterface::removeContextFromTask).when(context, item).exactly(1)); | ||
268 | QVERIFY(storageMock(&Akonadi::StorageInterface::updateItem).when(item, nullptr).exactly(1)); | 268 | QVERIFY(storageMock(&Akonadi::StorageInterface::updateItem).when(item, repository.get()).exactly(1)); | ||
269 | } | 269 | } | ||
270 | } | 270 | } | ||
271 | 271 | | |||
272 | void shouldDissociateTaskFromAllContext_data() | 272 | void shouldDissociateTaskFromAllContext_data() | ||
273 | { | 273 | { | ||
274 | QTest::addColumn<Akonadi::Item>("item"); | 274 | QTest::addColumn<Akonadi::Item>("item"); | ||
275 | QTest::addColumn<Domain::Task::Ptr>("task"); | 275 | QTest::addColumn<Domain::Task::Ptr>("task"); | ||
276 | QTest::addColumn<Testlib::AkonadiFakeItemFetchJob*>("itemFetchJob"); | 276 | QTest::addColumn<Testlib::AkonadiFakeItemFetchJob*>("itemFetchJob"); | ||
Show All 24 Lines | 292 | { | |||
301 | Utils::MockObject<Akonadi::StorageInterface> storageMock; | 301 | Utils::MockObject<Akonadi::StorageInterface> storageMock; | ||
302 | Utils::MockObject<Akonadi::SerializerInterface> serializerMock; | 302 | Utils::MockObject<Akonadi::SerializerInterface> serializerMock; | ||
303 | QScopedPointer<Akonadi::ContextRepository> repository(new Akonadi::ContextRepository(storageMock.getInstance(), | 303 | QScopedPointer<Akonadi::ContextRepository> repository(new Akonadi::ContextRepository(storageMock.getInstance(), | ||
304 | serializerMock.getInstance())); | 304 | serializerMock.getInstance())); | ||
305 | 305 | | |||
306 | // Storage mock returning the create job | 306 | // Storage mock returning the create job | ||
307 | storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()) | 307 | storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()) | ||
308 | .thenReturn(itemFetchJob); | 308 | .thenReturn(itemFetchJob); | ||
309 | storageMock(&Akonadi::StorageInterface::updateItem).when(item, nullptr) | 309 | storageMock(&Akonadi::StorageInterface::updateItem).when(item, repository.get()) | ||
310 | .thenReturn(itemModifyJob); | 310 | .thenReturn(itemModifyJob); | ||
311 | 311 | | |||
312 | // Serializer mock returning the item for the task | 312 | // Serializer mock returning the item for the task | ||
313 | serializerMock(&Akonadi::SerializerInterface::createItemFromTask).when(task) | 313 | serializerMock(&Akonadi::SerializerInterface::createItemFromTask).when(task) | ||
314 | .thenReturn(item); | 314 | .thenReturn(item); | ||
315 | 315 | | |||
316 | // WHEN | 316 | // WHEN | ||
317 | auto dissociateJob = repository->dissociateAll(task); | 317 | auto dissociateJob = repository->dissociateAll(task); | ||
318 | 318 | | |||
319 | if (execJob) | 319 | if (execJob) | ||
320 | dissociateJob->exec(); | 320 | dissociateJob->exec(); | ||
321 | 321 | | |||
322 | // THEN | 322 | // THEN | ||
323 | QVERIFY(storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()).exactly(1)); | 323 | QVERIFY(storageMock(&Akonadi::StorageInterface::fetchItem).when(item, repository.get()).exactly(1)); | ||
324 | if (execJob) { | 324 | if (execJob) { | ||
325 | QVERIFY(storageMock(&Akonadi::StorageInterface::updateItem).when(item, nullptr).exactly(1)); | 325 | QVERIFY(storageMock(&Akonadi::StorageInterface::updateItem).when(item, repository.get()).exactly(1)); | ||
326 | } else { | 326 | } else { | ||
327 | delete dissociateJob; | 327 | delete dissociateJob; | ||
328 | } | 328 | } | ||
329 | 329 | | |||
330 | // Give a chance to itemFetchJob to delete itself | 330 | // Give a chance to itemFetchJob to delete itself | ||
331 | // in case of an error (since it uses deleteLater() internally) | 331 | // in case of an error (since it uses deleteLater() internally) | ||
332 | QTest::qWait(10); | 332 | QTest::qWait(10); | ||
333 | } | 333 | } | ||
334 | }; | 334 | }; | ||
335 | 335 | | |||
336 | ZANSHIN_TEST_MAIN(AkonadiContextRepositoryTest) | 336 | ZANSHIN_TEST_MAIN(AkonadiContextRepositoryTest) | ||
337 | 337 | | |||
338 | #include "akonadicontextrepositorytest.moc" | 338 | #include "akonadicontextrepositorytest.moc" |