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"