1 /* 2 * SPDX-FileCopyrightText: 2015 Kevin Ottens <ervin@kde.org> 3 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 4 */ 5 6 7 #ifndef TESTLIB_AKONADIFAKEDATA_H 8 #define TESTLIB_AKONADIFAKEDATA_H 9 10 #include <QObject> 11 12 #include <AkonadiCore/Akonadi/Collection> 13 #include <AkonadiCore/Akonadi/Item> 14 15 #include "testlib/akonadifakestoragebehavior.h" 16 17 namespace Akonadi { 18 class MonitorInterface; 19 class StorageInterface; 20 } 21 22 namespace Utils { 23 class DependencyManager; 24 } 25 26 namespace Testlib { 27 28 class AkonadiFakeMonitor; 29 30 class AkonadiFakeData 31 { 32 public: 33 AkonadiFakeData(); 34 AkonadiFakeData(const AkonadiFakeData &other); 35 ~AkonadiFakeData(); 36 37 AkonadiFakeData &operator=(const AkonadiFakeData &other); 38 39 Akonadi::Collection::List collections() const; 40 Akonadi::Collection::List childCollections(Akonadi::Collection::Id parentId) const; 41 Akonadi::Collection collection(Akonadi::Collection::Id id) const; 42 void createCollection(const Akonadi::Collection &collection); 43 void modifyCollection(const Akonadi::Collection &collection); 44 void removeCollection(const Akonadi::Collection &collection); 45 46 QStringList contextsUids() const; 47 Akonadi::Item::List contexts() const; 48 Akonadi::Item contextItem(const QString &uid) const; 49 void createContext(const Akonadi::Item &item); 50 void modifyContext(const Akonadi::Item &item); 51 void removeContext(const Akonadi::Item &item); 52 53 Akonadi::Item::List items() const; 54 Akonadi::Item::List childItems(Akonadi::Collection::Id parentId) const; 55 Akonadi::Item::List contextItems(const QString& contextUid) const; 56 Akonadi::Item item(Akonadi::Item::Id id) const; 57 void createItem(const Akonadi::Item &item); 58 void modifyItem(const Akonadi::Item &item); 59 void removeItem(const Akonadi::Item &item); 60 61 Akonadi::MonitorInterface *createMonitor(); 62 Akonadi::StorageInterface *createStorage(); 63 std::unique_ptr<Utils::DependencyManager> createDependencies(); 64 65 Akonadi::Collection::Id maxCollectionId() const; 66 Akonadi::Item::Id maxItemId() const; 67 68 Akonadi::Collection reconstructAncestors(const Akonadi::Collection &collection, 69 const Akonadi::Collection &root = Akonadi::Collection::root()) const; 70 Akonadi::Item reconstructItemDependencies(const Akonadi::Item &item, 71 const Akonadi::Collection &root = Akonadi::Collection::root()) const; 72 73 const AkonadiFakeStorageBehavior &storageBehavior() const; 74 AkonadiFakeStorageBehavior &storageBehavior(); 75 76 private: 77 QHash<Akonadi::Collection::Id, Akonadi::Collection> m_collections; 78 QHash<Akonadi::Collection::Id, QList<Akonadi::Collection::Id>> m_childCollections; 79 80 using ContextUid = QString; 81 QHash<ContextUid, Akonadi::Item> m_contexts; 82 83 QHash<Akonadi::Item::Id, Akonadi::Item> m_items; 84 QHash<Akonadi::Collection::Id, QList<Akonadi::Item::Id>> m_childItems; 85 QHash<ContextUid, QList<Akonadi::Item::Id>> m_contextItems; 86 87 QScopedPointer<AkonadiFakeMonitor> m_monitor; 88 89 AkonadiFakeStorageBehavior m_storageBehavior; 90 }; 91 92 } 93 94 #endif // TESTLIB_AKONADIFAKEDATA_H 95