File indexing completed on 2024-05-12 05:10:40

0001 /*
0002     SPDX-FileCopyrightText: 2013 Sérgio Martins <iamsergio@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <Akonadi/Collection>
0010 #include <KCalendarCore/Calendar>
0011 #include <QObject>
0012 #include <QString>
0013 
0014 namespace Akonadi
0015 {
0016 class ETMCalendar;
0017 class TodoPurger;
0018 }
0019 
0020 class TodoPurgerTest : public QObject, KCalendarCore::Calendar::CalendarObserver
0021 {
0022     Q_OBJECT
0023 private Q_SLOTS:
0024     void initTestCase();
0025     void cleanupTestCase();
0026     void testPurge();
0027 
0028 public:
0029     void calendarIncidenceAdded(const KCalendarCore::Incidence::Ptr &incidence) override;
0030     void calendarIncidenceDeleted(const KCalendarCore::Incidence::Ptr &incidence, const KCalendarCore::Calendar *calendar) override;
0031 
0032 public Q_SLOTS:
0033     void onTodosPurged(bool success, int numDeleted, int numIgnored);
0034 
0035 private:
0036     void createTree();
0037     void createTodo(const QString &uid, const QString &parentUid, bool completed, bool recurring = false);
0038     void fetchCollection();
0039 
0040     Akonadi::ETMCalendar *m_calendar = nullptr;
0041     Akonadi::Collection m_collection;
0042     int m_pendingCreations;
0043     int m_pendingDeletions;
0044     bool m_pendingPurgeSignal = false;
0045 
0046     int m_numDeleted;
0047     int m_numIgnored;
0048 
0049     Akonadi::TodoPurger *m_todoPurger = nullptr;
0050 };