Changeset View
Changeset View
Standalone View
Standalone View
tests/units/akonadi/akonadiserializertest.cpp
Show All 29 Lines | |||||
30 | 30 | | |||
31 | #include <AkonadiCore/Collection> | 31 | #include <AkonadiCore/Collection> | ||
32 | #include <AkonadiCore/EntityDisplayAttribute> | 32 | #include <AkonadiCore/EntityDisplayAttribute> | ||
33 | #include <AkonadiCore/Item> | 33 | #include <AkonadiCore/Item> | ||
34 | #include <KCalCore/Todo> | 34 | #include <KCalCore/Todo> | ||
35 | 35 | | |||
36 | Q_DECLARE_METATYPE(Akonadi::Item*) | 36 | Q_DECLARE_METATYPE(Akonadi::Item*) | ||
37 | 37 | | |||
38 | using Akonadi::Serializer; | ||||
39 | | ||||
38 | static void setTodoDates(KCalCore::Todo::Ptr todo, const QDate &start, const QDate &due) { | 40 | static void setTodoDates(KCalCore::Todo::Ptr todo, const QDate &start, const QDate &due) { | ||
39 | todo->setDtStart(QDateTime(start)); | 41 | todo->setDtStart(QDateTime(start)); | ||
40 | todo->setDtDue(QDateTime(due)); | 42 | todo->setDtDue(QDateTime(due)); | ||
41 | } | 43 | } | ||
42 | 44 | | |||
43 | static const char s_contextListProperty[] = "ContextList"; | | |||
44 | static const char s_appName[] = "Zanshin"; | | |||
45 | | ||||
46 | class AkonadiSerializerTest : public QObject | 45 | class AkonadiSerializerTest : public QObject | ||
47 | { | 46 | { | ||
48 | Q_OBJECT | 47 | Q_OBJECT | ||
49 | private slots: | 48 | private slots: | ||
50 | void shouldKnowWhenAnObjectRepresentsACollection() | 49 | void shouldKnowWhenAnObjectRepresentsACollection() | ||
51 | { | 50 | { | ||
52 | // GIVEN | 51 | // GIVEN | ||
53 | Akonadi::Serializer serializer; | 52 | Akonadi::Serializer serializer; | ||
▲ Show 20 Lines • Show All 474 Lines • ▼ Show 20 Line(s) | |||||
528 | 527 | | |||
529 | void shouldCreateNullTaskFromProjectItem() | 528 | void shouldCreateNullTaskFromProjectItem() | ||
530 | { | 529 | { | ||
531 | // GIVEN | 530 | // GIVEN | ||
532 | 531 | | |||
533 | // A todo with the project flag | 532 | // A todo with the project flag | ||
534 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | 533 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | ||
535 | todo->setSummary(QStringLiteral("foo")); | 534 | todo->setSummary(QStringLiteral("foo")); | ||
536 | todo->setCustomProperty("Zanshin", "Project", QStringLiteral("1")); | 535 | todo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); | ||
537 | 536 | | |||
538 | // ... as payload of an item | 537 | // ... as payload of an item | ||
539 | Akonadi::Item item; | 538 | Akonadi::Item item; | ||
540 | item.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 539 | item.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
541 | item.setPayload<KCalCore::Todo::Ptr>(todo); | 540 | item.setPayload<KCalCore::Todo::Ptr>(todo); | ||
542 | 541 | | |||
543 | // WHEN | 542 | // WHEN | ||
544 | Akonadi::Serializer serializer; | 543 | Akonadi::Serializer serializer; | ||
▲ Show 20 Lines • Show All 97 Lines • ▼ Show 20 Line(s) | 637 | for (int i = 0; i < updatedAttachmentData.size(); i++) { | |||
642 | else | 641 | else | ||
643 | attachment->setUri(updatedAttachmentUris.at(i)); | 642 | attachment->setUri(updatedAttachmentUris.at(i)); | ||
644 | attachment->setMimeType(updatedAttachmentMimeTypes.at(i)); | 643 | attachment->setMimeType(updatedAttachmentMimeTypes.at(i)); | ||
645 | attachment->setLabel(updatedAttachmentLabels.at(i)); | 644 | attachment->setLabel(updatedAttachmentLabels.at(i)); | ||
646 | updatedTodo->addAttachment(attachment); | 645 | updatedTodo->addAttachment(attachment); | ||
647 | } | 646 | } | ||
648 | 647 | | |||
649 | if (updatedRunning) { | 648 | if (updatedRunning) { | ||
650 | updatedTodo->setCustomProperty("Zanshin", "Running", "1"); | 649 | updatedTodo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsRunning(), "1"); | ||
651 | } else { | 650 | } else { | ||
652 | updatedTodo->removeCustomProperty("Zanshin", "Running"); | 651 | updatedTodo->removeCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsRunning()); | ||
653 | } | 652 | } | ||
654 | 653 | | |||
655 | // ... as payload of a new item | 654 | // ... as payload of a new item | ||
656 | Akonadi::Item updatedItem; | 655 | Akonadi::Item updatedItem; | ||
657 | updatedItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 656 | updatedItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
658 | updatedItem.setPayload<KCalCore::Todo::Ptr>(updatedTodo); | 657 | updatedItem.setPayload<KCalCore::Todo::Ptr>(updatedTodo); | ||
659 | 658 | | |||
660 | // ... which has a new parent collection | 659 | // ... which has a new parent collection | ||
▲ Show 20 Lines • Show All 209 Lines • ▼ Show 20 Line(s) | 842 | { | |||
870 | // ... deserialized as a task | 869 | // ... deserialized as a task | ||
871 | Akonadi::Serializer serializer; | 870 | Akonadi::Serializer serializer; | ||
872 | auto task = serializer.createTaskFromItem(originalItem); | 871 | auto task = serializer.createTaskFromItem(originalItem); | ||
873 | 872 | | |||
874 | // WHEN | 873 | // WHEN | ||
875 | // A todo with the project flag | 874 | // A todo with the project flag | ||
876 | KCalCore::Todo::Ptr projectTodo(new KCalCore::Todo); | 875 | KCalCore::Todo::Ptr projectTodo(new KCalCore::Todo); | ||
877 | projectTodo->setSummary(QStringLiteral("foo")); | 876 | projectTodo->setSummary(QStringLiteral("foo")); | ||
878 | projectTodo->setCustomProperty("Zanshin", "Project", QStringLiteral("1")); | 877 | projectTodo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); | ||
879 | 878 | | |||
880 | // ... as payload of an item | 879 | // ... as payload of an item | ||
881 | Akonadi::Item projectItem; | 880 | Akonadi::Item projectItem; | ||
882 | projectItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 881 | projectItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
883 | projectItem.setPayload<KCalCore::Todo::Ptr>(projectTodo); | 882 | projectItem.setPayload<KCalCore::Todo::Ptr>(projectTodo); | ||
884 | serializer.updateTaskFromItem(task, projectItem); | 883 | serializer.updateTaskFromItem(task, projectItem); | ||
885 | 884 | | |||
886 | // THEN | 885 | // THEN | ||
▲ Show 20 Lines • Show All 196 Lines • ▼ Show 20 Line(s) | 1076 | for (int i = 0; i < attachments.size(); i++) { | |||
1083 | QCOMPARE(attachment->mimeType(), attachments.at(i).mimeType()); | 1082 | QCOMPARE(attachment->mimeType(), attachments.at(i).mimeType()); | ||
1084 | } | 1083 | } | ||
1085 | 1084 | | |||
1086 | if (!todoUid.isEmpty()) { | 1085 | if (!todoUid.isEmpty()) { | ||
1087 | QCOMPARE(todo->uid(), todoUid); | 1086 | QCOMPARE(todo->uid(), todoUid); | ||
1088 | } | 1087 | } | ||
1089 | 1088 | | |||
1090 | QCOMPARE(todo->relatedTo(), QStringLiteral("parent-uid")); | 1089 | QCOMPARE(todo->relatedTo(), QStringLiteral("parent-uid")); | ||
1091 | QCOMPARE(todo->customProperty("Zanshin", "Running"), running ? QStringLiteral("1") : QString()); | 1090 | QCOMPARE(todo->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsRunning()), running ? QStringLiteral("1") : QString()); | ||
1092 | } | 1091 | } | ||
1093 | 1092 | | |||
1094 | void shouldVerifyIfAnItemIsATaskChild_data() | 1093 | void shouldVerifyIfAnItemIsATaskChild_data() | ||
1095 | { | 1094 | { | ||
1096 | QTest::addColumn<Domain::Task::Ptr>("task"); | 1095 | QTest::addColumn<Domain::Task::Ptr>("task"); | ||
1097 | QTest::addColumn<Akonadi::Item>("item"); | 1096 | QTest::addColumn<Akonadi::Item>("item"); | ||
1098 | QTest::addColumn<bool>("isParent"); | 1097 | QTest::addColumn<bool>("isParent"); | ||
1099 | 1098 | | |||
▲ Show 20 Lines • Show All 131 Lines • ▼ Show 20 Line(s) | 1229 | { | |||
1231 | // GIVEN | 1230 | // GIVEN | ||
1232 | 1231 | | |||
1233 | // Data... | 1232 | // Data... | ||
1234 | QFETCH(QString, summary); | 1233 | QFETCH(QString, summary); | ||
1235 | 1234 | | |||
1236 | // ... stored in a todo... | 1235 | // ... stored in a todo... | ||
1237 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | 1236 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | ||
1238 | todo->setSummary(summary); | 1237 | todo->setSummary(summary); | ||
1239 | todo->setCustomProperty("Zanshin", "Project", QStringLiteral("1")); | 1238 | todo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); | ||
1240 | QVERIFY(!todo->uid().isEmpty()); | 1239 | QVERIFY(!todo->uid().isEmpty()); | ||
1241 | 1240 | | |||
1242 | // ... as payload of an item | 1241 | // ... as payload of an item | ||
1243 | Akonadi::Item item(42); | 1242 | Akonadi::Item item(42); | ||
1244 | item.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 1243 | item.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
1245 | item.setPayload<KCalCore::Todo::Ptr>(todo); | 1244 | item.setPayload<KCalCore::Todo::Ptr>(todo); | ||
1246 | 1245 | | |||
1247 | // which has a parent collection | 1246 | // which has a parent collection | ||
▲ Show 20 Lines • Show All 55 Lines • ▼ Show 20 Line(s) | |||||
1303 | 1302 | | |||
1304 | void shouldUpdateProjectFromItem() | 1303 | void shouldUpdateProjectFromItem() | ||
1305 | { | 1304 | { | ||
1306 | // GIVEN | 1305 | // GIVEN | ||
1307 | 1306 | | |||
1308 | // A todo... | 1307 | // A todo... | ||
1309 | KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); | 1308 | KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); | ||
1310 | originalTodo->setSummary(QStringLiteral("summary")); | 1309 | originalTodo->setSummary(QStringLiteral("summary")); | ||
1311 | originalTodo->setCustomProperty("Zanshin", "Project", QStringLiteral("1")); | 1310 | originalTodo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); | ||
1312 | 1311 | | |||
1313 | // ... as payload of an item... | 1312 | // ... as payload of an item... | ||
1314 | Akonadi::Item originalItem(42); | 1313 | Akonadi::Item originalItem(42); | ||
1315 | originalItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 1314 | originalItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
1316 | originalItem.setPayload<KCalCore::Todo::Ptr>(originalTodo); | 1315 | originalItem.setPayload<KCalCore::Todo::Ptr>(originalTodo); | ||
1317 | 1316 | | |||
1318 | // ... which has a parent collection... | 1317 | // ... which has a parent collection... | ||
1319 | Akonadi::Collection originalCollection(43); | 1318 | Akonadi::Collection originalCollection(43); | ||
1320 | originalItem.setParentCollection(originalCollection); | 1319 | originalItem.setParentCollection(originalCollection); | ||
1321 | 1320 | | |||
1322 | // ... deserialized as a project | 1321 | // ... deserialized as a project | ||
1323 | Akonadi::Serializer serializer; | 1322 | Akonadi::Serializer serializer; | ||
1324 | auto project = serializer.createProjectFromItem(originalItem); | 1323 | auto project = serializer.createProjectFromItem(originalItem); | ||
1325 | 1324 | | |||
1326 | // WHEN | 1325 | // WHEN | ||
1327 | 1326 | | |||
1328 | // Data... | 1327 | // Data... | ||
1329 | QFETCH(QString, updatedSummary); | 1328 | QFETCH(QString, updatedSummary); | ||
1330 | 1329 | | |||
1331 | // ... in a new todo... | 1330 | // ... in a new todo... | ||
1332 | KCalCore::Todo::Ptr updatedTodo(new KCalCore::Todo); | 1331 | KCalCore::Todo::Ptr updatedTodo(new KCalCore::Todo); | ||
1333 | updatedTodo->setSummary(updatedSummary); | 1332 | updatedTodo->setSummary(updatedSummary); | ||
1334 | updatedTodo->setCustomProperty("Zanshin", "Project", QStringLiteral("1")); | 1333 | updatedTodo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); | ||
1335 | QVERIFY(!updatedTodo->uid().isEmpty()); | 1334 | QVERIFY(!updatedTodo->uid().isEmpty()); | ||
1336 | 1335 | | |||
1337 | // ... as payload of a new item | 1336 | // ... as payload of a new item | ||
1338 | Akonadi::Item updatedItem(44); | 1337 | Akonadi::Item updatedItem(44); | ||
1339 | updatedItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 1338 | updatedItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
1340 | updatedItem.setPayload<KCalCore::Todo::Ptr>(updatedTodo); | 1339 | updatedItem.setPayload<KCalCore::Todo::Ptr>(updatedTodo); | ||
1341 | 1340 | | |||
1342 | // ... which has a new parent collection | 1341 | // ... which has a new parent collection | ||
Show All 14 Lines | 1355 | { | |||
1357 | // GIVEN | 1356 | // GIVEN | ||
1358 | 1357 | | |||
1359 | // Data... | 1358 | // Data... | ||
1360 | const QString summary = QStringLiteral("summary"); | 1359 | const QString summary = QStringLiteral("summary"); | ||
1361 | 1360 | | |||
1362 | // ... stored in a todo... | 1361 | // ... stored in a todo... | ||
1363 | KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); | 1362 | KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); | ||
1364 | originalTodo->setSummary(summary); | 1363 | originalTodo->setSummary(summary); | ||
1365 | originalTodo->setCustomProperty("Zanshin", "Project", QStringLiteral("1")); | 1364 | originalTodo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); | ||
1366 | 1365 | | |||
1367 | // ... as payload of an item... | 1366 | // ... as payload of an item... | ||
1368 | Akonadi::Item originalItem; | 1367 | Akonadi::Item originalItem; | ||
1369 | originalItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 1368 | originalItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
1370 | originalItem.setPayload<KCalCore::Todo::Ptr>(originalTodo); | 1369 | originalItem.setPayload<KCalCore::Todo::Ptr>(originalTodo); | ||
1371 | 1370 | | |||
1372 | // ... deserialized as a project | 1371 | // ... deserialized as a project | ||
1373 | Akonadi::Serializer serializer; | 1372 | Akonadi::Serializer serializer; | ||
Show All 12 Lines | 1384 | { | |||
1386 | // GIVEN | 1385 | // GIVEN | ||
1387 | 1386 | | |||
1388 | // Data... | 1387 | // Data... | ||
1389 | const QString summary = QStringLiteral("summary"); | 1388 | const QString summary = QStringLiteral("summary"); | ||
1390 | 1389 | | |||
1391 | // ... stored in a todo... | 1390 | // ... stored in a todo... | ||
1392 | KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); | 1391 | KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); | ||
1393 | originalTodo->setSummary(summary); | 1392 | originalTodo->setSummary(summary); | ||
1394 | originalTodo->setCustomProperty("Zanshin", "Project", QStringLiteral("1")); | 1393 | originalTodo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); | ||
1395 | 1394 | | |||
1396 | // ... as payload of an item... | 1395 | // ... as payload of an item... | ||
1397 | Akonadi::Item originalItem; | 1396 | Akonadi::Item originalItem; | ||
1398 | originalItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 1397 | originalItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
1399 | originalItem.setPayload<KCalCore::Todo::Ptr>(originalTodo); | 1398 | originalItem.setPayload<KCalCore::Todo::Ptr>(originalTodo); | ||
1400 | 1399 | | |||
1401 | // ... deserialized as a project | 1400 | // ... deserialized as a project | ||
1402 | Akonadi::Serializer serializer; | 1401 | Akonadi::Serializer serializer; | ||
▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Line(s) | 1433 | { | |||
1466 | QCOMPARE(item.parentCollection().isValid(), parentCollectionId > 0); | 1465 | QCOMPARE(item.parentCollection().isValid(), parentCollectionId > 0); | ||
1467 | if (parentCollectionId > 0) { | 1466 | if (parentCollectionId > 0) { | ||
1468 | QCOMPARE(item.parentCollection().id(), parentCollectionId); | 1467 | QCOMPARE(item.parentCollection().id(), parentCollectionId); | ||
1469 | } | 1468 | } | ||
1470 | 1469 | | |||
1471 | auto todo = item.payload<KCalCore::Todo::Ptr>(); | 1470 | auto todo = item.payload<KCalCore::Todo::Ptr>(); | ||
1472 | QCOMPARE(todo->summary(), summary); | 1471 | QCOMPARE(todo->summary(), summary); | ||
1473 | QCOMPARE(todo->uid(), todoUid); | 1472 | QCOMPARE(todo->uid(), todoUid); | ||
1474 | QVERIFY(!todo->customProperty("Zanshin", "Project").isEmpty()); | 1473 | QVERIFY(!todo->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject()).isEmpty()); | ||
1475 | } | 1474 | } | ||
1476 | 1475 | | |||
1477 | void shouldVerifyIfAnItemIsAProjectChild_data() | 1476 | void shouldVerifyIfAnItemIsAProjectChild_data() | ||
1478 | { | 1477 | { | ||
1479 | QTest::addColumn<Domain::Project::Ptr>("project"); | 1478 | QTest::addColumn<Domain::Project::Ptr>("project"); | ||
1480 | QTest::addColumn<Akonadi::Item>("item"); | 1479 | QTest::addColumn<Akonadi::Item>("item"); | ||
1481 | QTest::addColumn<bool>("isParent"); | 1480 | QTest::addColumn<bool>("isParent"); | ||
1482 | 1481 | | |||
▲ Show 20 Lines • Show All 237 Lines • ▼ Show 20 Line(s) | 1715 | { | |||
1720 | // WHEN | 1719 | // WHEN | ||
1721 | Akonadi::Serializer serializer; | 1720 | Akonadi::Serializer serializer; | ||
1722 | serializer.promoteItemToProject(item); | 1721 | serializer.promoteItemToProject(item); | ||
1723 | 1722 | | |||
1724 | // THEN | 1723 | // THEN | ||
1725 | if (item.hasPayload<KCalCore::Todo::Ptr>()) { | 1724 | if (item.hasPayload<KCalCore::Todo::Ptr>()) { | ||
1726 | auto todo = item.payload<KCalCore::Todo::Ptr>(); | 1725 | auto todo = item.payload<KCalCore::Todo::Ptr>(); | ||
1727 | QCOMPARE(todo->relatedTo(), QString()); | 1726 | QCOMPARE(todo->relatedTo(), QString()); | ||
1728 | QVERIFY(!todo->customProperty("Zanshin", "Project").isEmpty()); | 1727 | QVERIFY(!todo->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject()).isEmpty()); | ||
1729 | } | 1728 | } | ||
1730 | } | 1729 | } | ||
1731 | 1730 | | |||
1732 | void shouldClearItem_data() | 1731 | void shouldClearItem_data() | ||
1733 | { | 1732 | { | ||
1734 | QTest::addColumn<Akonadi::Item*>("item"); | 1733 | QTest::addColumn<Akonadi::Item*>("item"); | ||
1735 | 1734 | | |||
1736 | Akonadi::Item *itemWithContexts = new Akonadi::Item(15); | 1735 | Akonadi::Item *itemWithContexts = new Akonadi::Item(15); | ||
1737 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | 1736 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | ||
1738 | // we can cheat and not really create contexts... | 1737 | // we can cheat and not really create contexts... | ||
1739 | todo->setCustomProperty(s_appName, s_contextListProperty, "one,two"); | 1738 | todo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList(), "one,two"); | ||
1740 | itemWithContexts->setPayload<KCalCore::Todo::Ptr>(todo); | 1739 | itemWithContexts->setPayload<KCalCore::Todo::Ptr>(todo); | ||
1741 | QTest::newRow("with_contexts") << itemWithContexts; | 1740 | QTest::newRow("with_contexts") << itemWithContexts; | ||
1742 | 1741 | | |||
1743 | Akonadi::Item *itemWithNoContext = new Akonadi::Item(15); | 1742 | Akonadi::Item *itemWithNoContext = new Akonadi::Item(15); | ||
1744 | itemWithNoContext->setPayload<KCalCore::Todo::Ptr>(todo); | 1743 | itemWithNoContext->setPayload<KCalCore::Todo::Ptr>(todo); | ||
1745 | QTest::newRow("no_context") << itemWithNoContext; | 1744 | QTest::newRow("no_context") << itemWithNoContext; | ||
1746 | } | 1745 | } | ||
1747 | 1746 | | |||
1748 | void shouldClearItem() | 1747 | void shouldClearItem() | ||
1749 | { | 1748 | { | ||
1750 | // GIVEN | 1749 | // GIVEN | ||
1751 | QFETCH(Akonadi::Item*, item); | 1750 | QFETCH(Akonadi::Item*, item); | ||
1752 | 1751 | | |||
1753 | // WHEN | 1752 | // WHEN | ||
1754 | Akonadi::Serializer serializer; | 1753 | Akonadi::Serializer serializer; | ||
1755 | serializer.clearItem(item); | 1754 | serializer.clearItem(item); | ||
1756 | 1755 | | |||
1757 | // THEN | 1756 | // THEN | ||
1758 | auto todo = item->payload<KCalCore::Todo::Ptr>(); | 1757 | auto todo = item->payload<KCalCore::Todo::Ptr>(); | ||
1759 | QVERIFY(todo->customProperty(s_appName, s_contextListProperty).isEmpty()); | 1758 | QVERIFY(todo->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList()).isEmpty()); | ||
1760 | delete item; | 1759 | delete item; | ||
1761 | } | 1760 | } | ||
1762 | 1761 | | |||
1763 | void shouldCreateContextFromItem_data() | 1762 | void shouldCreateContextFromItem_data() | ||
1764 | { | 1763 | { | ||
1765 | QTest::addColumn<QString>("name"); | 1764 | QTest::addColumn<QString>("name"); | ||
1766 | 1765 | | |||
1767 | QTest::newRow("nominal case") << "Context42"; | 1766 | QTest::newRow("nominal case") << "Context42"; | ||
1768 | QTest::newRow("empty name case") << ""; | 1767 | QTest::newRow("empty name case") << ""; | ||
1769 | } | 1768 | } | ||
1770 | 1769 | | |||
1771 | void shouldCreateContextFromItem() | 1770 | void shouldCreateContextFromItem() | ||
1772 | { | 1771 | { | ||
1773 | // GIVEN | 1772 | // GIVEN | ||
1774 | 1773 | | |||
1775 | // Data... | 1774 | // Data... | ||
1776 | QFETCH(QString, name); | 1775 | QFETCH(QString, name); | ||
1777 | 1776 | | |||
1778 | // ... stored in a todo... | 1777 | // ... stored in a todo... | ||
1779 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | 1778 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | ||
1780 | todo->setSummary(name); | 1779 | todo->setSummary(name); | ||
1781 | todo->setCustomProperty(s_appName, "Context", QStringLiteral("1")); | 1780 | todo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsContext(), QStringLiteral("1")); | ||
1782 | QVERIFY(!todo->uid().isEmpty()); | 1781 | QVERIFY(!todo->uid().isEmpty()); | ||
1783 | 1782 | | |||
1784 | // ... as payload of an item | 1783 | // ... as payload of an item | ||
1785 | Akonadi::Item item(42); | 1784 | Akonadi::Item item(42); | ||
1786 | item.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 1785 | item.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
1787 | item.setPayload<KCalCore::Todo::Ptr>(todo); | 1786 | item.setPayload<KCalCore::Todo::Ptr>(todo); | ||
1788 | 1787 | | |||
1789 | // which has a parent collection | 1788 | // which has a parent collection | ||
Show All 23 Lines | |||||
1813 | { | 1812 | { | ||
1814 | // GIVEN | 1813 | // GIVEN | ||
1815 | QFETCH(bool, isProject); | 1814 | QFETCH(bool, isProject); | ||
1816 | 1815 | | |||
1817 | // A project todo | 1816 | // A project todo | ||
1818 | KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); | 1817 | KCalCore::Todo::Ptr originalTodo(new KCalCore::Todo); | ||
1819 | originalTodo->setSummary("summary"); | 1818 | originalTodo->setSummary("summary"); | ||
1820 | if (isProject) | 1819 | if (isProject) | ||
1821 | originalTodo->setCustomProperty(s_appName, "Project", QStringLiteral("1")); | 1820 | originalTodo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); | ||
1822 | 1821 | | |||
1823 | // ... as payload of an item... | 1822 | // ... as payload of an item... | ||
1824 | Akonadi::Item originalItem; | 1823 | Akonadi::Item originalItem; | ||
1825 | originalItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 1824 | originalItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
1826 | originalItem.setPayload<KCalCore::Todo::Ptr>(originalTodo); | 1825 | originalItem.setPayload<KCalCore::Todo::Ptr>(originalTodo); | ||
1827 | 1826 | | |||
1828 | // WHEN | 1827 | // WHEN | ||
1829 | Akonadi::Serializer serializer; | 1828 | Akonadi::Serializer serializer; | ||
Show All 13 Lines | 1841 | { | |||
1843 | // GIVEN | 1842 | // GIVEN | ||
1844 | 1843 | | |||
1845 | // Data... | 1844 | // Data... | ||
1846 | QFETCH(QString, name); | 1845 | QFETCH(QString, name); | ||
1847 | 1846 | | |||
1848 | // ... stored in a todo... | 1847 | // ... stored in a todo... | ||
1849 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | 1848 | KCalCore::Todo::Ptr todo(new KCalCore::Todo); | ||
1850 | todo->setSummary(name); | 1849 | todo->setSummary(name); | ||
1851 | todo->setCustomProperty(s_appName, "Context", QStringLiteral("1")); | 1850 | todo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsContext(), QStringLiteral("1")); | ||
1852 | QVERIFY(!todo->uid().isEmpty()); | 1851 | QVERIFY(!todo->uid().isEmpty()); | ||
1853 | 1852 | | |||
1854 | // ... as payload of an item | 1853 | // ... as payload of an item | ||
1855 | Akonadi::Item item(42); | 1854 | Akonadi::Item item(42); | ||
1856 | item.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 1855 | item.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
1857 | item.setPayload<KCalCore::Todo::Ptr>(todo); | 1856 | item.setPayload<KCalCore::Todo::Ptr>(todo); | ||
1858 | 1857 | | |||
1859 | // WHEN | 1858 | // WHEN | ||
Show All 24 Lines | 1879 | { | |||
1884 | // A context | 1883 | // A context | ||
1885 | auto context = Domain::Context::Ptr::create(); | 1884 | auto context = Domain::Context::Ptr::create(); | ||
1886 | context->setName("summary"); | 1885 | context->setName("summary"); | ||
1887 | context->setProperty("todoUid", qint64(43)); | 1886 | context->setProperty("todoUid", qint64(43)); | ||
1888 | 1887 | | |||
1889 | KCalCore::Todo::Ptr wrongTodo(new KCalCore::Todo); | 1888 | KCalCore::Todo::Ptr wrongTodo(new KCalCore::Todo); | ||
1890 | wrongTodo->setSummary("wrongSummary"); | 1889 | wrongTodo->setSummary("wrongSummary"); | ||
1891 | if (isProject) | 1890 | if (isProject) | ||
1892 | wrongTodo->setCustomProperty(s_appName, "Project", QStringLiteral("1")); | 1891 | wrongTodo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject(), QStringLiteral("1")); | ||
1893 | 1892 | | |||
1894 | Akonadi::Item wrongItem; | 1893 | Akonadi::Item wrongItem; | ||
1895 | wrongItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | 1894 | wrongItem.setMimeType(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); | ||
1896 | wrongItem.setPayload<KCalCore::Todo::Ptr>(wrongTodo); | 1895 | wrongItem.setPayload<KCalCore::Todo::Ptr>(wrongTodo); | ||
1897 | 1896 | | |||
1898 | // WHEN | 1897 | // WHEN | ||
1899 | Akonadi::Serializer serializer; | 1898 | Akonadi::Serializer serializer; | ||
1900 | serializer.updateContextFromItem(context, wrongItem); | 1899 | serializer.updateContextFromItem(context, wrongItem); | ||
Show All 15 Lines | 1907 | { | |||
1916 | context->setProperty("todoUid", contextUid); | 1915 | context->setProperty("todoUid", contextUid); | ||
1917 | 1916 | | |||
1918 | Akonadi::Item unrelatedItem; | 1917 | Akonadi::Item unrelatedItem; | ||
1919 | QTest::newRow("Unrelated item") << context << unrelatedItem << false; | 1918 | QTest::newRow("Unrelated item") << context << unrelatedItem << false; | ||
1920 | 1919 | | |||
1921 | Akonadi::Item relatedItem; | 1920 | Akonadi::Item relatedItem; | ||
1922 | auto todo = KCalCore::Todo::Ptr::create(); | 1921 | auto todo = KCalCore::Todo::Ptr::create(); | ||
1923 | todo->setSummary("summary"); | 1922 | todo->setSummary("summary"); | ||
1924 | todo->setCustomProperty(s_appName, s_contextListProperty, contextUid); | 1923 | todo->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList(), contextUid); | ||
1925 | relatedItem.setPayload<KCalCore::Todo::Ptr>(todo); | 1924 | relatedItem.setPayload<KCalCore::Todo::Ptr>(todo); | ||
1926 | QTest::newRow("Related item") << context << relatedItem << true; | 1925 | QTest::newRow("Related item") << context << relatedItem << true; | ||
1927 | 1926 | | |||
1928 | auto invalidContext = Domain::Context::Ptr::create(); | 1927 | auto invalidContext = Domain::Context::Ptr::create(); | ||
1929 | QTest::newRow("Invalid context") << invalidContext << relatedItem << false; | 1928 | QTest::newRow("Invalid context") << invalidContext << relatedItem << false; | ||
1930 | 1929 | | |||
1931 | Akonadi::Item invalidItem; | 1930 | Akonadi::Item invalidItem; | ||
1932 | QTest::newRow("Invalid Item") << context << invalidItem << false; | 1931 | QTest::newRow("Invalid Item") << context << invalidItem << false; | ||
▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Line(s) | 2003 | { | |||
2014 | Akonadi::Item item; | 2013 | Akonadi::Item item; | ||
2015 | auto todo = KCalCore::Todo::Ptr::create(); | 2014 | auto todo = KCalCore::Todo::Ptr::create(); | ||
2016 | todo->setSummary("summary"); | 2015 | todo->setSummary("summary"); | ||
2017 | item.setPayload<KCalCore::Todo::Ptr>(todo); | 2016 | item.setPayload<KCalCore::Todo::Ptr>(todo); | ||
2018 | QTest::newRow("item_with_no_context") << context << item << contextUid; | 2017 | QTest::newRow("item_with_no_context") << context << item << contextUid; | ||
2019 | 2018 | | |||
2020 | Akonadi::Item item2; | 2019 | Akonadi::Item item2; | ||
2021 | auto todo2 = KCalCore::Todo::Ptr::create(); | 2020 | auto todo2 = KCalCore::Todo::Ptr::create(); | ||
2022 | todo2->setCustomProperty(s_appName, s_contextListProperty, "another"); | 2021 | todo2->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList(), "another"); | ||
2023 | item2.setPayload<KCalCore::Todo::Ptr>(todo2); | 2022 | item2.setPayload<KCalCore::Todo::Ptr>(todo2); | ||
2024 | const QString bothContexts = QStringLiteral("another,") + contextUid; | 2023 | const QString bothContexts = QStringLiteral("another,") + contextUid; | ||
2025 | QTest::newRow("item_with_another_context") << context << item2 << bothContexts; | 2024 | QTest::newRow("item_with_another_context") << context << item2 << bothContexts; | ||
2026 | 2025 | | |||
2027 | Akonadi::Item item3; | 2026 | Akonadi::Item item3; | ||
2028 | auto todo3 = KCalCore::Todo::Ptr::create(); | 2027 | auto todo3 = KCalCore::Todo::Ptr::create(); | ||
2029 | todo3->setCustomProperty(s_appName, s_contextListProperty, bothContexts); | 2028 | todo3->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList(), bothContexts); | ||
2030 | item3.setPayload<KCalCore::Todo::Ptr>(todo3); | 2029 | item3.setPayload<KCalCore::Todo::Ptr>(todo3); | ||
2031 | QTest::newRow("item_with_this_context_already") << context << item3 << bothContexts; | 2030 | QTest::newRow("item_with_this_context_already") << context << item3 << bothContexts; | ||
2032 | } | 2031 | } | ||
2033 | 2032 | | |||
2034 | void shouldAddContextToTask() | 2033 | void shouldAddContextToTask() | ||
2035 | { | 2034 | { | ||
2036 | // GIVEN | 2035 | // GIVEN | ||
2037 | QFETCH(Domain::Context::Ptr, context); | 2036 | QFETCH(Domain::Context::Ptr, context); | ||
2038 | QFETCH(Akonadi::Item, item); | 2037 | QFETCH(Akonadi::Item, item); | ||
2039 | QFETCH(QString, expectedContextList); | 2038 | QFETCH(QString, expectedContextList); | ||
2040 | 2039 | | |||
2041 | // WHEN | 2040 | // WHEN | ||
2042 | Akonadi::Serializer serializer; | 2041 | Akonadi::Serializer serializer; | ||
2043 | serializer.addContextToTask(context, item); | 2042 | serializer.addContextToTask(context, item); | ||
2044 | 2043 | | |||
2045 | // THEN | 2044 | // THEN | ||
2046 | KCalCore::Todo::Ptr todo = item.payload<KCalCore::Todo::Ptr>(); | 2045 | KCalCore::Todo::Ptr todo = item.payload<KCalCore::Todo::Ptr>(); | ||
2047 | QCOMPARE(todo->customProperty(s_appName, s_contextListProperty), expectedContextList); | 2046 | QCOMPARE(todo->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList()), expectedContextList); | ||
2048 | } | 2047 | } | ||
2049 | 2048 | | |||
2050 | void shouldRemoveContextFromTask_data() | 2049 | void shouldRemoveContextFromTask_data() | ||
2051 | { | 2050 | { | ||
2052 | QTest::addColumn<Domain::Context::Ptr>("context"); | 2051 | QTest::addColumn<Domain::Context::Ptr>("context"); | ||
2053 | QTest::addColumn<Akonadi::Item>("item"); | 2052 | QTest::addColumn<Akonadi::Item>("item"); | ||
2054 | QTest::addColumn<QString>("expectedContextList"); | 2053 | QTest::addColumn<QString>("expectedContextList"); | ||
2055 | 2054 | | |||
2056 | auto context = Domain::Context::Ptr::create(); | 2055 | auto context = Domain::Context::Ptr::create(); | ||
2057 | const QString contextUid = QStringLiteral("abc-123"); | 2056 | const QString contextUid = QStringLiteral("abc-123"); | ||
2058 | context->setProperty("todoUid", contextUid); | 2057 | context->setProperty("todoUid", contextUid); | ||
2059 | 2058 | | |||
2060 | Akonadi::Item item; | 2059 | Akonadi::Item item; | ||
2061 | auto todo = KCalCore::Todo::Ptr::create(); | 2060 | auto todo = KCalCore::Todo::Ptr::create(); | ||
2062 | todo->setSummary("summary"); | 2061 | todo->setSummary("summary"); | ||
2063 | item.setPayload<KCalCore::Todo::Ptr>(todo); | 2062 | item.setPayload<KCalCore::Todo::Ptr>(todo); | ||
2064 | QTest::newRow("item_with_no_context") << context << item << QString(); | 2063 | QTest::newRow("item_with_no_context") << context << item << QString(); | ||
2065 | 2064 | | |||
2066 | Akonadi::Item item2; | 2065 | Akonadi::Item item2; | ||
2067 | auto todo2 = KCalCore::Todo::Ptr::create(); | 2066 | auto todo2 = KCalCore::Todo::Ptr::create(); | ||
2068 | todo2->setCustomProperty(s_appName, s_contextListProperty, "another"); | 2067 | todo2->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList(), "another"); | ||
2069 | item2.setPayload<KCalCore::Todo::Ptr>(todo2); | 2068 | item2.setPayload<KCalCore::Todo::Ptr>(todo2); | ||
2070 | QTest::newRow("item_with_another_context") << context << item2 << QString("another"); | 2069 | QTest::newRow("item_with_another_context") << context << item2 << QString("another"); | ||
2071 | 2070 | | |||
2072 | Akonadi::Item item3; | 2071 | Akonadi::Item item3; | ||
2073 | auto todo3 = KCalCore::Todo::Ptr::create(); | 2072 | auto todo3 = KCalCore::Todo::Ptr::create(); | ||
2074 | todo3->setCustomProperty(s_appName, s_contextListProperty, contextUid); | 2073 | todo3->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList(), contextUid); | ||
2075 | item3.setPayload<KCalCore::Todo::Ptr>(todo3); | 2074 | item3.setPayload<KCalCore::Todo::Ptr>(todo3); | ||
2076 | QTest::newRow("item_with_this_context_already") << context << item3 << QString(); | 2075 | QTest::newRow("item_with_this_context_already") << context << item3 << QString(); | ||
2077 | 2076 | | |||
2078 | Akonadi::Item item4; | 2077 | Akonadi::Item item4; | ||
2079 | auto todo4 = KCalCore::Todo::Ptr::create(); | 2078 | auto todo4 = KCalCore::Todo::Ptr::create(); | ||
2080 | const QString bothContexts = QStringLiteral("another,") + contextUid; | 2079 | const QString bothContexts = QStringLiteral("another,") + contextUid; | ||
2081 | todo4->setCustomProperty(s_appName, s_contextListProperty, bothContexts); | 2080 | todo4->setCustomProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList(), bothContexts); | ||
2082 | item4.setPayload<KCalCore::Todo::Ptr>(todo4); | 2081 | item4.setPayload<KCalCore::Todo::Ptr>(todo4); | ||
2083 | QTest::newRow("item_with_two_contexts") << context << item4 << QString("another"); | 2082 | QTest::newRow("item_with_two_contexts") << context << item4 << QString("another"); | ||
2084 | } | 2083 | } | ||
2085 | 2084 | | |||
2086 | void shouldRemoveContextFromTask() | 2085 | void shouldRemoveContextFromTask() | ||
2087 | { | 2086 | { | ||
2088 | // GIVEN | 2087 | // GIVEN | ||
2089 | QFETCH(Domain::Context::Ptr, context); | 2088 | QFETCH(Domain::Context::Ptr, context); | ||
2090 | QFETCH(Akonadi::Item, item); | 2089 | QFETCH(Akonadi::Item, item); | ||
2091 | QFETCH(QString, expectedContextList); | 2090 | QFETCH(QString, expectedContextList); | ||
2092 | 2091 | | |||
2093 | // WHEN | 2092 | // WHEN | ||
2094 | Akonadi::Serializer serializer; | 2093 | Akonadi::Serializer serializer; | ||
2095 | serializer.removeContextFromTask(context, item); | 2094 | serializer.removeContextFromTask(context, item); | ||
2096 | 2095 | | |||
2097 | // THEN | 2096 | // THEN | ||
2098 | KCalCore::Todo::Ptr todo = item.payload<KCalCore::Todo::Ptr>(); | 2097 | KCalCore::Todo::Ptr todo = item.payload<KCalCore::Todo::Ptr>(); | ||
2099 | QCOMPARE(todo->customProperty(s_appName, s_contextListProperty), expectedContextList); | 2098 | QCOMPARE(todo->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList()), expectedContextList); | ||
2100 | } | 2099 | } | ||
2101 | 2100 | | |||
2102 | // Investigation into how to differentiate all-day events from events with time, | 2101 | // Investigation into how to differentiate all-day events from events with time, | ||
2103 | // using QDateTime only. Doesn't seem to be possible. | 2102 | // using QDateTime only. Doesn't seem to be possible. | ||
2104 | void noWayToHaveQDateTimeWithoutTime() | 2103 | void noWayToHaveQDateTimeWithoutTime() | ||
2105 | { | 2104 | { | ||
2106 | // GIVEN a QDateTime without time information | 2105 | // GIVEN a QDateTime without time information | ||
2107 | QDateTime dateOnly(QDate(2016, 6, 12), QTime(-1, -1, -1)); | 2106 | QDateTime dateOnly(QDate(2016, 6, 12), QTime(-1, -1, -1)); | ||
Show All 26 Lines |