File indexing completed on 2024-05-12 05:22:05
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 "calendarcreatejob.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 CalendarCreateJobTest : public QObject 0025 { 0026 Q_OBJECT 0027 private Q_SLOTS: 0028 void initTestCase() 0029 { 0030 NetworkAccessManagerFactory::setFactory(new FakeNetworkAccessManagerFactory); 0031 } 0032 0033 void testCreate_data() 0034 { 0035 QTest::addColumn<QList<FakeNetworkAccessManager::Scenario>>("scenarios"); 0036 QTest::addColumn<CalendarsList>("calendars"); 0037 QTest::addColumn<CalendarsList>("responses"); 0038 0039 auto calendar1 = calendarFromFile(QFINDTESTDATA("data/calendar1.json")); 0040 auto response1 = CalendarPtr::create(); 0041 response1->setUid(calendar1->uid()); 0042 response1->setTitle(calendar1->title()); 0043 response1->setDetails(calendar1->details()); 0044 response1->setTimezone(calendar1->timezone()); 0045 response1->setEtag(calendar1->etag()); 0046 0047 calendar1->setUid({}); 0048 QTest::newRow("simple calendar") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/calendar1_create_request.txt"), 0049 QFINDTESTDATA("data/calendar1_create_response.txt"))} 0050 << CalendarsList{calendar1} << CalendarsList{response1}; 0051 0052 auto calendar2 = calendarFromFile(QFINDTESTDATA("data/calendar2.json")); 0053 auto response2 = CalendarPtr::create(); 0054 response2->setUid(calendar2->uid()); 0055 response2->setTitle(calendar2->title()); 0056 response2->setDetails(calendar2->details()); 0057 response2->setTimezone(calendar2->timezone()); 0058 response2->setEtag(calendar2->etag()); 0059 0060 calendar2->setUid({}); 0061 QTest::newRow("batch create") 0062 << QList<FakeNetworkAccessManager::Scenario>{ 0063 scenarioFromFile(QFINDTESTDATA("data/calendar1_create_request.txt"), 0064 QFINDTESTDATA("data/calendar1_create_response.txt")), 0065 scenarioFromFile(QFINDTESTDATA("data/calendar2_create_request.txt"), 0066 QFINDTESTDATA("data/calendar2_create_response.txt")), 0067 } 0068 << CalendarsList{ calendar1, calendar2 } 0069 << CalendarsList{ response1, response2 }; 0070 } 0071 0072 void testCreate() 0073 { 0074 QFETCH(QList<FakeNetworkAccessManager::Scenario>, scenarios); 0075 QFETCH(CalendarsList, calendars); 0076 QFETCH(CalendarsList, responses); 0077 0078 FakeNetworkAccessManagerFactory::get()->setScenarios(scenarios); 0079 0080 auto account = AccountPtr::create(QStringLiteral("MockAccount"), QStringLiteral("MockToken")); 0081 CalendarCreateJob *job = nullptr; 0082 if (calendars.count() == 1) { 0083 job = new CalendarCreateJob(calendars.at(0), account); 0084 } else { 0085 job = new CalendarCreateJob(calendars, account); 0086 } 0087 QVERIFY(execJob(job)); 0088 const auto items = job->items(); 0089 QCOMPARE(items.count(), responses.count()); 0090 for (int i = 0; i < responses.count(); ++i) { 0091 const auto returnedCalendar = items.at(i).dynamicCast<Calendar>(); 0092 QVERIFY(returnedCalendar); 0093 QCOMPARE(*returnedCalendar, *responses.at(i)); 0094 } 0095 } 0096 }; 0097 0098 QTEST_GUILESS_MAIN(CalendarCreateJobTest) 0099 0100 #include "calendarcreatejobtest.moc"