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"