File indexing completed on 2024-05-19 05:11:10

0001 /*
0002     SPDX-FileCopyrightText: 2011 Sérgio Martins <iamsergio@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "../src/fetchjobcalendar.h"
0008 #include <Akonadi/CollectionFetchJob>
0009 #include <Akonadi/CollectionFetchScope>
0010 #include <Akonadi/ItemCreateJob>
0011 #include <Akonadi/ItemFetchJob>
0012 #include <akonadi/qtest_akonadi.h>
0013 
0014 using namespace Akonadi;
0015 using namespace KCalendarCore;
0016 
0017 class FetchJobCalendarTest : public QObject
0018 {
0019     Q_OBJECT
0020     Collection mCollection;
0021 
0022     void createIncidence(const QString &uid)
0023     {
0024         Item item;
0025         item.setMimeType(Event::eventMimeType());
0026         Incidence::Ptr incidence(new Event());
0027         incidence->setUid(uid);
0028         incidence->setSummary(QStringLiteral("summary"));
0029         incidence->setDtStart(QDateTime::currentDateTimeUtc());
0030         item.setPayload<KCalendarCore::Incidence::Ptr>(incidence);
0031         auto job = new ItemCreateJob(item, mCollection, this);
0032         AKVERIFYEXEC(job);
0033     }
0034 
0035     void fetchCollection()
0036     {
0037         auto job = new CollectionFetchJob(Collection::root(), CollectionFetchJob::Recursive, this);
0038         // Get list of collections
0039         job->fetchScope().setContentMimeTypes(QStringList() << QStringLiteral("application/x-vnd.akonadi.calendar.event"));
0040         AKVERIFYEXEC(job);
0041 
0042         // Find our collection
0043         Collection::List collections = job->collections();
0044         QVERIFY(!collections.isEmpty());
0045         mCollection = collections.first();
0046 
0047         QVERIFY(mCollection.isValid());
0048     }
0049 
0050 private Q_SLOTS:
0051     void initTestCase()
0052     {
0053         AkonadiTest::checkTestIsIsolated();
0054 
0055         fetchCollection();
0056         qRegisterMetaType<Akonadi::Item>("Akonadi::Item");
0057     }
0058 
0059     void testFetching()
0060     {
0061         createIncidence(QStringLiteral("a"));
0062         createIncidence(QStringLiteral("b"));
0063         createIncidence(QStringLiteral("c"));
0064         createIncidence(QStringLiteral("d"));
0065         createIncidence(QStringLiteral("e"));
0066         createIncidence(QStringLiteral("f"));
0067 
0068         FetchJobCalendar calendar;
0069         QSignalSpy spy(&calendar, &FetchJobCalendar::loadFinished);
0070         QVERIFY(spy.wait(1000));
0071         QVERIFY2(spy.at(0).at(0).toBool(), qPrintable(spy.at(0).at(1).toString()));
0072 
0073         const Incidence::List incidences = calendar.incidences();
0074         QCOMPARE(incidences.count(), 6);
0075         QVERIFY(calendar.item(QStringLiteral("a")).isValid());
0076         QVERIFY(calendar.item(QStringLiteral("b")).isValid());
0077         QVERIFY(calendar.item(QStringLiteral("c")).isValid());
0078         QVERIFY(calendar.item(QStringLiteral("d")).isValid());
0079         QVERIFY(calendar.item(QStringLiteral("e")).isValid());
0080         QVERIFY(calendar.item(QStringLiteral("f")).isValid());
0081     }
0082 };
0083 
0084 QTEST_AKONADIMAIN(FetchJobCalendarTest)
0085 
0086 #include "fetchjobcalendartest.moc"