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 "eventcreatejob.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 EventCreateJobTest : 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<EventsList>("events"); 0037 QTest::addColumn<EventsList>("responses"); 0038 0039 auto event1 = eventFromFile(QFINDTESTDATA("data/event1.json")); 0040 auto response1 = EventPtr::create(*event1); 0041 QTest::newRow("simple event") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/event1_create_request.txt"), 0042 QFINDTESTDATA("data/event1_create_response.txt"))} 0043 << EventsList{event1} << EventsList{response1}; 0044 0045 auto event2 = eventFromFile(QFINDTESTDATA("data/event2.json")); 0046 auto response2 = EventPtr::create(*event2); 0047 QTest::newRow("batch create") 0048 << QList<FakeNetworkAccessManager::Scenario>{ 0049 scenarioFromFile(QFINDTESTDATA("data/event1_create_request.txt"), 0050 QFINDTESTDATA("data/event1_create_response.txt")), 0051 scenarioFromFile(QFINDTESTDATA("data/event2_create_request.txt"), 0052 QFINDTESTDATA("data/event2_create_response.txt")), 0053 } 0054 << EventsList{ event1, event2 } 0055 << EventsList{ response1, response2 }; 0056 } 0057 0058 void testCreate() 0059 { 0060 QFETCH(QList<FakeNetworkAccessManager::Scenario>, scenarios); 0061 QFETCH(EventsList, events); 0062 QFETCH(EventsList, responses); 0063 0064 FakeNetworkAccessManagerFactory::get()->setScenarios(scenarios); 0065 0066 auto account = AccountPtr::create(QStringLiteral("MockAccount"), QStringLiteral("MockToken")); 0067 EventCreateJob *job = nullptr; 0068 if (events.count() == 1) { 0069 job = new EventCreateJob(events.at(0), QStringLiteral("MockAccount"), account); 0070 } else { 0071 job = new EventCreateJob(events, QStringLiteral("MockAccount"), account); 0072 } 0073 QVERIFY(execJob(job)); 0074 const auto items = job->items(); 0075 QCOMPARE(items.count(), responses.count()); 0076 for (int i = 0; i < responses.count(); ++i) { 0077 const auto returnedEvent = items.at(i).dynamicCast<Event>(); 0078 QVERIFY(returnedEvent); 0079 QCOMPARE(*returnedEvent, *responses.at(i)); 0080 } 0081 } 0082 }; 0083 0084 QTEST_GUILESS_MAIN(EventCreateJobTest) 0085 0086 #include "eventcreatejobtest.moc"