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 #include <QObject>
0007 #include <QTest>
0008 #include <cstring>
0009 
0010 #include "drivetestutils.h"
0011 #include "fakenetworkaccessmanagerfactory.h"
0012 #include "testutils.h"
0013 
0014 #include "about.h"
0015 #include "aboutfetchjob.h"
0016 #include "account.h"
0017 #include "types.h"
0018 
0019 using namespace KGAPI2;
0020 
0021 namespace
0022 {
0023 static const char *LimitedFieldTag = "limited fields";
0024 }
0025 
0026 Q_DECLARE_METATYPE(QList<FakeNetworkAccessManager::Scenario>)
0027 Q_DECLARE_METATYPE(KGAPI2::Drive::AboutPtr)
0028 
0029 class AboutFetchJobTest : public QObject
0030 {
0031     Q_OBJECT
0032 private Q_SLOTS:
0033     void initTestCase()
0034     {
0035         NetworkAccessManagerFactory::setFactory(new FakeNetworkAccessManagerFactory);
0036     }
0037 
0038     void testFetch_data()
0039     {
0040         QTest::addColumn<QList<FakeNetworkAccessManager::Scenario>>("scenarios");
0041         QTest::addColumn<KGAPI2::Drive::AboutPtr>("about");
0042 
0043         QTest::newRow("") << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(QFINDTESTDATA("data/about_fetch_request.txt"),
0044                                                                                         QFINDTESTDATA("data/about_fetch_response.txt"))}
0045                           << aboutFromFile(QFINDTESTDATA("data/about.json"));
0046 
0047         QTest::newRow(LimitedFieldTag) << QList<FakeNetworkAccessManager::Scenario>{scenarioFromFile(
0048             QFINDTESTDATA("data/about_fetch_limited_fields_request.txt"),
0049             QFINDTESTDATA("data/about_fetch_limited_fields_response.txt"))}
0050                                        << aboutFromFile(QFINDTESTDATA("data/about_limited_fields.json"));
0051     }
0052 
0053     void testFetch()
0054     {
0055         QFETCH(QList<FakeNetworkAccessManager::Scenario>, scenarios);
0056         QFETCH(KGAPI2::Drive::AboutPtr, about);
0057 
0058         FakeNetworkAccessManagerFactory::get()->setScenarios(scenarios);
0059 
0060         auto account = AccountPtr::create(QStringLiteral("MockAccount"), QStringLiteral("MockToken"));
0061         auto job = new Drive::AboutFetchJob(account, nullptr);
0062 
0063         if (strcmp(LimitedFieldTag, QTest::currentDataTag()) == 0) {
0064             job->setFields({Drive::About::Fields::Kind, Drive::About::Fields::PermissionId});
0065         }
0066 
0067         QVERIFY(execJob(job));
0068         const auto items = job->items();
0069         QCOMPARE(items.count(), 1);
0070         const auto returnedAbout = items.at(0).dynamicCast<Drive::About>();
0071         QVERIFY(returnedAbout);
0072         QCOMPARE(*returnedAbout, *about);
0073     }
0074 };
0075 
0076 QTEST_GUILESS_MAIN(AboutFetchJobTest)
0077 
0078 #include "aboutfetchjobtest.moc"