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 "calendarfetchjob.h"
0017 #include "types.h"
0018 
0019 #include <iostream>
0020 
0021 using namespace KGAPI2;
0022 
0023 Q_DECLARE_METATYPE(QList<FakeNetworkAccessManager::Scenario>)
0024 Q_DECLARE_METATYPE(KGAPI2::CalendarsList)
0025 
0026 class CalendarFetchJobTest : public QObject
0027 {
0028     Q_OBJECT
0029 private Q_SLOTS:
0030     void initTestCase()
0031     {
0032         NetworkAccessManagerFactory::setFactory(new FakeNetworkAccessManagerFactory);
0033     }
0034 
0035     void testFetchAll()
0036     {
0037         FakeNetworkAccessManagerFactory::get()->setScenarios(
0038             {scenarioFromFile(QFINDTESTDATA("data/calendars_fetch_page1_request.txt"), QFINDTESTDATA("data/calendars_fetch_page1_response.txt")),
0039              scenarioFromFile(QFINDTESTDATA("data/calendars_fetch_page2_request.txt"), QFINDTESTDATA("data/calendars_fetch_page2_response.txt"))});
0040         const CalendarsList calendars = {calendarFromFile(QFINDTESTDATA("data/calendar1.json")), calendarFromFile(QFINDTESTDATA("data/calendar2.json"))};
0041 
0042         auto account = AccountPtr::create(QStringLiteral("MockAccount"), QStringLiteral("MockToken"));
0043         auto job = new CalendarFetchJob(account);
0044         QVERIFY(execJob(job));
0045         const auto items = job->items();
0046         QCOMPARE(items.count(), calendars.count());
0047         for (int i = 0; i < calendars.count(); ++i) {
0048             const auto returnedCalendar = items.at(i).dynamicCast<Calendar>();
0049             const auto expectedCalendar = calendars.at(i);
0050             QVERIFY(returnedCalendar);
0051             QCOMPARE(*returnedCalendar, *expectedCalendar);
0052         }
0053     }
0054 
0055     void testFetchSingle()
0056     {
0057         FakeNetworkAccessManagerFactory::get()->setScenarios(
0058             {scenarioFromFile(QFINDTESTDATA("data/calendar1_fetch_request.txt"), QFINDTESTDATA("data/calendar1_fetch_response.txt"))
0059 
0060             });
0061         const auto calendar = calendarFromFile(QFINDTESTDATA("data/calendar1.json"));
0062 
0063         auto account = AccountPtr::create(QStringLiteral("MockAccount"), QStringLiteral("MockToken"));
0064         auto job = new CalendarFetchJob(calendar->uid(), account);
0065         QVERIFY(execJob(job));
0066         const auto items = job->items();
0067         QCOMPARE(items.count(), 1);
0068         const auto returnedCalendar = items.at(0).dynamicCast<Calendar>();
0069         QVERIFY(returnedCalendar);
0070         QCOMPARE(*returnedCalendar, *calendar);
0071     }
0072 };
0073 
0074 QTEST_GUILESS_MAIN(CalendarFetchJobTest)
0075 
0076 #include "calendarfetchjobtest.moc"