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 "calendar.h"
0016 #include "calendardeletejob.h"
0017 #include "types.h"
0018 
0019 using namespace KGAPI2;
0020 
0021 Q_DECLARE_METATYPE(QList<FakeNetworkAccessManager::Scenario>)
0022 Q_DECLARE_METATYPE(KGAPI2::CalendarsList)
0023 
0024 class CalendarDeleteJobTest : 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<CalendarsList>("calendars");
0037         QTest::addColumn<bool>("uidOnly");
0038 
0039         QTest::newRow("simple calendar") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/calendar1_delete_request.txt"),
0040                                                                                                        QFINDTESTDATA("data/calendar1_delete_response.txt"))}
0041                                          << CalendarsList{calendarFromFile(QFINDTESTDATA("data/calendar1.json"))} << false;
0042 
0043         QTest::newRow("simple calendar (uid)") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(
0044             QFINDTESTDATA("data/calendar1_delete_request.txt"),
0045             QFINDTESTDATA("data/calendar1_delete_response.txt"))}
0046                                                << CalendarsList{calendarFromFile(QFINDTESTDATA("data/calendar1.json"))} << true;
0047 
0048         QTest::newRow("batch delete") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/calendar1_delete_request.txt"),
0049                                                                                                     QFINDTESTDATA("data/calendar1_delete_response.txt")),
0050                                                                                    scenarioFromFile(QFINDTESTDATA("data/calendar2_delete_request.txt"),
0051                                                                                                     QFINDTESTDATA("data/calendar2_delete_response.txt"))}
0052                                       << CalendarsList{calendarFromFile(QFINDTESTDATA("data/calendar1.json")),
0053                                                        calendarFromFile(QFINDTESTDATA("data/calendar2.json"))}
0054                                       << false;
0055 
0056         QTest::newRow("batch delete (uid)") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/calendar1_delete_request.txt"),
0057                                                                                                           QFINDTESTDATA("data/calendar1_delete_response.txt")),
0058                                                                                          scenarioFromFile(QFINDTESTDATA("data/calendar2_delete_request.txt"),
0059                                                                                                           QFINDTESTDATA("data/calendar2_delete_response.txt"))}
0060                                             << CalendarsList{calendarFromFile(QFINDTESTDATA("data/calendar1.json")),
0061                                                              calendarFromFile(QFINDTESTDATA("data/calendar2.json"))}
0062                                             << true;
0063     }
0064 
0065     void testDelete()
0066     {
0067         QFETCH(QList<FakeNetworkAccessManager::Scenario>, scenarios);
0068         QFETCH(CalendarsList, calendars);
0069         QFETCH(bool, uidOnly);
0070 
0071         FakeNetworkAccessManagerFactory::get()->setScenarios(scenarios);
0072 
0073         auto account = AccountPtr::create(QStringLiteral("MockAccount"), QStringLiteral("MockToken"));
0074         CalendarDeleteJob *job = nullptr;
0075         if (calendars.count() == 1) {
0076             if (uidOnly) {
0077                 job = new CalendarDeleteJob(calendars.at(0)->uid(), account, nullptr);
0078             } else {
0079                 job = new CalendarDeleteJob(calendars.at(0), account, nullptr);
0080             }
0081         } else {
0082             if (uidOnly) {
0083                 job = new CalendarDeleteJob(elementsToUids(calendars), account, nullptr);
0084             } else {
0085                 job = new CalendarDeleteJob(calendars, account, nullptr);
0086             }
0087         }
0088         QVERIFY(execJob(job));
0089     }
0090 };
0091 
0092 QTEST_GUILESS_MAIN(CalendarDeleteJobTest)
0093 
0094 #include "calendardeletejobtest.moc"