File indexing completed on 2025-03-09 04:57:05

0001 /*
0002  * SPDX-FileCopyrightText: 2015 Kevin Ottens <ervin@kde.org>
0003  SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005 
0006 
0007 #include "testlib/gentodo.h"
0008 
0009 #include <KCalendarCore/Todo>
0010 
0011 #include <testlib/qtest_zanshin.h>
0012 #include <akonadi/akonadiserializer.h>
0013 
0014 using namespace Testlib;
0015 using Akonadi::Serializer;
0016 
0017 class GenTodoTest : public QObject
0018 {
0019     Q_OBJECT
0020 private slots:
0021     void shouldImplicitlyConvertBackToItem()
0022     {
0023         // GIVEN
0024         auto item = Akonadi::Item(42);
0025         auto gen = GenTodo(item);
0026 
0027         // WHEN
0028         Akonadi::Item newItem = gen;
0029 
0030         // THEN
0031         QCOMPARE(newItem, item);
0032         QCOMPARE(newItem.mimeType(), KCalendarCore::Todo::todoMimeType());
0033         QVERIFY(newItem.hasPayload<KCalendarCore::Todo::Ptr>());
0034     }
0035 
0036     void shouldAllowToSetId()
0037     {
0038         // GIVEN
0039         Akonadi::Item item = GenTodo().withId(42);
0040 
0041         // THEN
0042         QCOMPARE(item.id(), 42LL);
0043     }
0044 
0045     void shouldAllowToSetParent()
0046     {
0047         // GIVEN
0048         Akonadi::Item item = GenTodo().withParent(42);
0049 
0050         // THEN
0051         QCOMPARE(item.parentCollection().id(), 42LL);
0052     }
0053 
0054     void shouldAllowToSetContexts()
0055     {
0056         // GIVEN
0057         Akonadi::Item item = GenTodo().withContexts({"42", "43", "44"});
0058 
0059         // THEN
0060         auto todo = item.payload<KCalendarCore::Todo::Ptr>();
0061         QStringList contextUids = todo->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyContextList()).split(',');
0062         QCOMPARE(contextUids.size(), 3);
0063         QCOMPARE(contextUids.at(0), "42");
0064         QCOMPARE(contextUids.at(1), "43");
0065         QCOMPARE(contextUids.at(2), "44");
0066     }
0067 
0068     void shouldAllowToSetProjectType()
0069     {
0070         // GIVEN
0071         Akonadi::Item item = GenTodo().asProject();
0072 
0073         // THEN
0074         QVERIFY(!item.payload<KCalendarCore::Todo::Ptr>()->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject()).isEmpty());
0075 
0076         // WHEN
0077         item = GenTodo(item).asProject(false);
0078 
0079         // THEN
0080         QVERIFY(item.payload<KCalendarCore::Todo::Ptr>()->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsProject()).isEmpty());
0081     }
0082 
0083     void shouldAllowToSetContextType()
0084     {
0085         // GIVEN
0086         Akonadi::Item item = GenTodo().asContext();
0087 
0088         // THEN
0089         QVERIFY(!item.payload<KCalendarCore::Todo::Ptr>()->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsContext()).isEmpty());
0090 
0091         // WHEN
0092         item = GenTodo(item).asContext(false);
0093 
0094         // THEN
0095         QVERIFY(item.payload<KCalendarCore::Todo::Ptr>()->customProperty(Serializer::customPropertyAppName(), Serializer::customPropertyIsContext()).isEmpty());
0096     }
0097 
0098     void shouldAllowToSetUid()
0099     {
0100         // GIVEN
0101         Akonadi::Item item = GenTodo().withUid(QStringLiteral("42"));
0102 
0103         // THEN
0104         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->uid(), QStringLiteral("42"));
0105     }
0106 
0107     void shouldAllowToSetParentUid()
0108     {
0109         // GIVEN
0110         Akonadi::Item item = GenTodo().withParentUid(QStringLiteral("42"));
0111 
0112         // THEN
0113         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->relatedTo(), QStringLiteral("42"));
0114     }
0115 
0116     void shouldAllowToSetTitle()
0117     {
0118         // GIVEN
0119         Akonadi::Item item = GenTodo().withTitle(QStringLiteral("42"));
0120 
0121         // THEN
0122         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->summary(), QStringLiteral("42"));
0123     }
0124 
0125     void shouldAllowToSetText()
0126     {
0127         // GIVEN
0128         Akonadi::Item item = GenTodo().withText(QStringLiteral("42"));
0129 
0130         // THEN
0131         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->description(), QStringLiteral("42"));
0132     }
0133 
0134     void shouldAllowToSetDoneState()
0135     {
0136         // GIVEN
0137         Akonadi::Item item = GenTodo().done();
0138 
0139         // THEN
0140         QVERIFY(item.payload<KCalendarCore::Todo::Ptr>()->isCompleted());
0141 
0142         // WHEN
0143         item = GenTodo(item).done(false);
0144 
0145         // THEN
0146         QVERIFY(!item.payload<KCalendarCore::Todo::Ptr>()->isCompleted());
0147     }
0148 
0149     void shouldAllowToSetDoneDate()
0150     {
0151         // GIVEN
0152         Akonadi::Item item = GenTodo().withDoneDate(QDate(2015, 4, 12));
0153 
0154         // THEN
0155         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->completed().toLocalTime().date(), QDate(2015, 04, 12));
0156     }
0157 
0158     void shouldAllowToSetDoneDateString()
0159     {
0160         // GIVEN
0161         Akonadi::Item item = GenTodo().withDoneDate(QStringLiteral("2015-04-12"));
0162 
0163         // THEN
0164         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->completed().toLocalTime().date(), QDate(2015, 04, 12));
0165     }
0166 
0167     void shouldAllowToSetStartDate()
0168     {
0169         // GIVEN
0170         Akonadi::Item item = GenTodo().withStartDate(QDate(2015, 4, 12));
0171 
0172         // THEN
0173         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->dtStart().date(), QDate(2015, 04, 12));
0174     }
0175 
0176     void shouldAllowToSetStartDateString()
0177     {
0178         // GIVEN
0179         Akonadi::Item item = GenTodo().withStartDate(QStringLiteral("2015-04-12"));
0180 
0181         // THEN
0182         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->dtStart().date(), QDate(2015, 04, 12));
0183     }
0184 
0185     void shouldAllowToSetDueDate()
0186     {
0187         // GIVEN
0188         Akonadi::Item item = GenTodo().withDueDate(QDate(2015, 4, 12));
0189 
0190         // THEN
0191         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->dtDue().date(), QDate(2015, 04, 12));
0192     }
0193 
0194     void shouldAllowToSetDueDateString()
0195     {
0196         // GIVEN
0197         Akonadi::Item item = GenTodo().withDueDate(QStringLiteral("2015-04-12"));
0198 
0199         // THEN
0200         QCOMPARE(item.payload<KCalendarCore::Todo::Ptr>()->dtDue().date(), QDate(2015, 04, 12));
0201     }
0202 };
0203 
0204 ZANSHIN_TEST_MAIN(GenTodoTest)
0205 
0206 #include "gentodotest.moc"