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

0001 /*
0002     SPDX-FileCopyrightText: 2011 Sérgio Martins <iamsergio@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "../src/history.h"
0010 #include "../src/history_p.h"
0011 #include "../src/incidencechanger.h"
0012 #include "unittestbase.h"
0013 
0014 enum SignalType { DeletionSignal, CreationSignal, ModificationSignal, UndoSignal, RedoSignal, NumSignals };
0015 
0016 class HistoryTest : public UnitTestBase
0017 {
0018     Q_OBJECT
0019     History *mHistory = nullptr;
0020     QHash<SignalType, int> mPendingSignals;
0021     QHash<int, Akonadi::Item> mItemByChangeId;
0022     QList<int> mKnownChangeIds;
0023 
0024 private Q_SLOTS:
0025     void initTestCase();
0026 
0027     void testCreation_data();
0028     void testCreation();
0029 
0030     void testDeletion_data();
0031     void testDeletion();
0032 
0033     void testModification_data();
0034     void testModification();
0035 
0036     void testAtomicOperations_data();
0037     void testAtomicOperations();
0038 
0039     // Tests a sequence of various create/delete/modify operations that are not part
0040     // of an atomic-operation.
0041     void testMix_data();
0042     void testMix();
0043 
0044 private:
0045     void waitForSignals();
0046 
0047 public Q_SLOTS:
0048     void
0049     deleteFinished(int changeId, const QList<Akonadi::Item::Id> &deletedIds, Akonadi::IncidenceChanger::ResultCode resultCode, const QString &errorMessage);
0050 
0051     void createFinished(int changeId, const Akonadi::Item &item, Akonadi::IncidenceChanger::ResultCode resultCode, const QString &errorString);
0052 
0053     void modifyFinished(int changeId, const Akonadi::Item &item, Akonadi::IncidenceChanger::ResultCode resultCode, const QString &errorString);
0054 
0055     void handleRedone(Akonadi::History::ResultCode result);
0056     void handleUndone(Akonadi::History::ResultCode result);
0057     void maybeQuitEventLoop();
0058 };