File indexing completed on 2024-05-12 05:22:06

0001 /*
0002  * SPDX-FileCopyrightText: 2018 Daniel Vrátil <dvratil@kde.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #include <QObject>
0008 #include <QTest>
0009 
0010 #include "calendartestutils.h"
0011 #include "fakenetworkaccessmanagerfactory.h"
0012 #include "testutils.h"
0013 
0014 #include "account.h"
0015 #include "event.h"
0016 #include "eventdeletejob.h"
0017 #include "types.h"
0018 
0019 using namespace KGAPI2;
0020 
0021 Q_DECLARE_METATYPE(QList<FakeNetworkAccessManager::Scenario>)
0022 Q_DECLARE_METATYPE(KGAPI2::EventsList)
0023 
0024 class EventDeleteJobTest : public QObject
0025 {
0026     Q_OBJECT
0027 private Q_SLOTS:
0028     void initTestCase()
0029     {
0030         NetworkAccessManagerFactory::setFactory(new FakeNetworkAccessManagerFactory);
0031     }
0032 
0033     void testDelete_data()
0034     {
0035         QTest::addColumn<QList<FakeNetworkAccessManager::Scenario>>("scenarios");
0036         QTest::addColumn<EventsList>("events");
0037         QTest::addColumn<bool>("idOnly");
0038 
0039         QTest::newRow("simple event") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/event1_delete_request.txt"),
0040                                                                                                     QFINDTESTDATA("data/event1_delete_response.txt"))}
0041                                       << EventsList{eventFromFile(QFINDTESTDATA("data/event1.json"))} << false;
0042 
0043         QTest::newRow("simple event (uid)") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/event1_delete_request.txt"),
0044                                                                                                           QFINDTESTDATA("data/event1_delete_response.txt"))}
0045                                             << EventsList{eventFromFile(QFINDTESTDATA("data/event1.json"))} << true;
0046 
0047         QTest::newRow("batch delete") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/event1_delete_request.txt"),
0048                                                                                                     QFINDTESTDATA("data/event1_delete_response.txt")),
0049                                                                                    scenarioFromFile(QFINDTESTDATA("data/event2_delete_request.txt"),
0050                                                                                                     QFINDTESTDATA("data/event2_delete_response.txt"))}
0051                                       << EventsList{eventFromFile(QFINDTESTDATA("data/event1.json")), eventFromFile(QFINDTESTDATA("data/event2.json"))}
0052                                       << false;
0053 
0054         QTest::newRow("batch delete (uid)") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/event1_delete_request.txt"),
0055                                                                                                           QFINDTESTDATA("data/event1_delete_response.txt")),
0056                                                                                          scenarioFromFile(QFINDTESTDATA("data/event2_delete_request.txt"),
0057                                                                                                           QFINDTESTDATA("data/event2_delete_response.txt"))}
0058                                             << EventsList{eventFromFile(QFINDTESTDATA("data/event1.json")), eventFromFile(QFINDTESTDATA("data/event2.json"))}
0059                                             << true;
0060     }
0061 
0062     void testDelete()
0063     {
0064         QFETCH(QList<FakeNetworkAccessManager::Scenario>, scenarios);
0065         QFETCH(EventsList, events);
0066         QFETCH(bool, idOnly);
0067 
0068         FakeNetworkAccessManagerFactory::get()->setScenarios(scenarios);
0069 
0070         auto account = AccountPtr::create(QStringLiteral("MockAccount"), QStringLiteral("MockToken"));
0071         EventDeleteJob *job = nullptr;
0072         if (events.count() == 1) {
0073             if (idOnly) {
0074                 job = new EventDeleteJob(events.at(0)->id(), QStringLiteral("MockAccount"), account, nullptr);
0075             } else {
0076                 job = new EventDeleteJob(events.at(0), QStringLiteral("MockAccount"), account, nullptr);
0077             }
0078         } else {
0079             if (idOnly) {
0080                 job = new EventDeleteJob(elementsToIds(events), QStringLiteral("MockAccount"), account, nullptr);
0081             } else {
0082                 job = new EventDeleteJob(events, QStringLiteral("MockAccount"), account, nullptr);
0083             }
0084         }
0085         QVERIFY(execJob(job));
0086     }
0087 };
0088 
0089 QTEST_GUILESS_MAIN(EventDeleteJobTest)
0090 
0091 #include "eventdeletejobtest.moc"