File indexing completed on 2024-05-12 05:22:07

0001 /*
0002  * SPDX-FileCopyrightText: 2023 Claudio Cambra <claudio.cambra@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 <KContacts/Picture>
0011 
0012 #include "peopletestutils.h"
0013 #include "fakenetworkaccessmanagerfactory.h"
0014 #include "testutils.h"
0015 
0016 #include "account.h"
0017 #include "types.h"
0018 #include "people/contactgroup.h"
0019 #include "people/contactgroupdeletejob.h"
0020 
0021 Q_DECLARE_METATYPE(QList<FakeNetworkAccessManager::Scenario>)
0022 Q_DECLARE_METATYPE(KGAPI2::People::ContactGroupList)
0023 
0024 namespace KGAPI2 {
0025 namespace People {
0026 
0027 class ContactGroupDeleteJobTest : public QObject
0028 {
0029     Q_OBJECT
0030 
0031 private Q_SLOTS:
0032     void initTestCase()
0033     {
0034         NetworkAccessManagerFactory::setFactory(new FakeNetworkAccessManagerFactory);
0035     }
0036 
0037     void testDelete_data()
0038     {
0039         QTest::addColumn<QList<FakeNetworkAccessManager::Scenario>>("scenarios");
0040         QTest::addColumn<ContactGroupList>("peopleToDelete");
0041 
0042         const auto contactGroup2DeleteRequest = scenarioFromFile(QFINDTESTDATA("data/contactgroup2_delete_request.txt"), QFINDTESTDATA("data/contactgroup2_delete_response.txt"));
0043         const auto contactGroup3DeleteRequest = scenarioFromFile(QFINDTESTDATA("data/contactgroup3_delete_request.txt"), QFINDTESTDATA("data/contactgroup3_delete_response.txt"));
0044         const auto contactGroup2 = TestUtils::contactGroupFromFile(QFINDTESTDATA("data/contactgroup2.json"));
0045         const auto contactGroup3 = TestUtils::contactGroupFromFile(QFINDTESTDATA("data/contactgroup3.json"));
0046 
0047         QTest::newRow("contactGroup2 resourceName delete") << QList<FakeNetworkAccessManager::Scenario>{ contactGroup2DeleteRequest }
0048                                                      << ContactGroupList{ contactGroup2 };
0049 
0050         QTest::newRow("contactGroup3 resourceName delete") << QList<FakeNetworkAccessManager::Scenario>{ contactGroup3DeleteRequest }
0051                                                      << ContactGroupList{ contactGroup3 };
0052 
0053         QTest::newRow("batch resourceName delete") << QList<FakeNetworkAccessManager::Scenario>{ contactGroup2DeleteRequest, contactGroup3DeleteRequest }
0054                                                    << ContactGroupList{ contactGroup2, contactGroup3 };
0055     }
0056 
0057     void testDelete()
0058     {
0059         QFETCH(QList<FakeNetworkAccessManager::Scenario>, scenarios);
0060         QFETCH(ContactGroupList, peopleToDelete);
0061 
0062         FakeNetworkAccessManagerFactory::get()->setScenarios(scenarios);
0063 
0064         const auto account = AccountPtr::create(QStringLiteral("MockAccount"), QStringLiteral("MockToken"));
0065         ContactGroupDeleteJob *job;
0066 
0067         QStringList peopleResourceNames;
0068         std::transform(peopleToDelete.cbegin(), peopleToDelete.cend(), std::back_inserter(peopleResourceNames), [](const ContactGroupPtr &contactGroup) {
0069             return contactGroup->resourceName();
0070         });
0071 
0072         if (peopleResourceNames.count() == 1) {
0073             job = new ContactGroupDeleteJob(peopleResourceNames.first(), account);
0074         } else {
0075             job = new ContactGroupDeleteJob(peopleResourceNames, account);
0076         }
0077 
0078         QVERIFY(execJob(job));
0079     }
0080 };
0081 
0082 }
0083 }
0084 
0085 QTEST_GUILESS_MAIN(KGAPI2::People::ContactGroupDeleteJobTest)
0086 
0087 #include "contactgroupdeletejobtest.moc"