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 "peopleservice.h" 0013 #include "peopletestutils.h" 0014 #include "fakenetworkaccessmanagerfactory.h" 0015 #include "testutils.h" 0016 0017 #include "account.h" 0018 #include "types.h" 0019 #include "people/contactgroup.h" 0020 #include "people/contactgroupfetchjob.h" 0021 0022 Q_DECLARE_METATYPE(QList<FakeNetworkAccessManager::Scenario>) 0023 Q_DECLARE_METATYPE(KGAPI2::People::ContactGroupList) 0024 0025 namespace KGAPI2 { 0026 namespace People { 0027 0028 class ContactGroupFetchJobTest : public QObject 0029 { 0030 Q_OBJECT 0031 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<QString>("contactGroupsResourceName"); 0042 QTest::addColumn<People::ContactGroupList>("contactGroupsFetched"); 0043 0044 const auto contactGroup1FetchRequest = scenarioFromFile(QFINDTESTDATA("data/contactgroup1_fetch_request.txt"), QFINDTESTDATA("data/contactgroup1_fetch_response.txt")); 0045 const auto contactGroup2FetchRequest = scenarioFromFile(QFINDTESTDATA("data/contactgroup2_fetch_request.txt"), QFINDTESTDATA("data/contactgroup2_fetch_response.txt")); 0046 const auto fullContactGroupListFetchRequest = scenarioFromFile(QFINDTESTDATA("data/contactgroup_list_fetch_request.txt"), QFINDTESTDATA("data/contactgroup_list_fetch_full_response.txt")); 0047 const auto partialContactGroupListInitialFetchRequest = scenarioFromFile(QFINDTESTDATA("data/contactgroup_list_fetch_request.txt"), QFINDTESTDATA("data/contactgroup_list_fetch_partial_response_1.txt")); 0048 const auto partialContactGroupListFollowupFetchRequest = scenarioFromFile(QFINDTESTDATA("data/contactgroup_list_fetch_followup_request.txt"), QFINDTESTDATA("data/contactgroup_list_fetch_partial_response_2.txt")); 0049 const auto contactGroup1 = TestUtils::contactGroupFromFile(QFINDTESTDATA("data/contactgroup1.json")); 0050 const auto contactGroup2 = TestUtils::contactGroupFromFile(QFINDTESTDATA("data/contactgroup2.json")); 0051 0052 QTest::newRow("simple contactGroup1 fetch") << QList<FakeNetworkAccessManager::Scenario>{ contactGroup1FetchRequest } 0053 << contactGroup1->resourceName() 0054 << People::ContactGroupList{ contactGroup1 }; 0055 0056 QTest::newRow("simple contactGroup2 fetch") << QList<FakeNetworkAccessManager::Scenario>{ contactGroup2FetchRequest } 0057 << contactGroup2->resourceName() 0058 << People::ContactGroupList{ contactGroup2 }; 0059 0060 QTest::newRow("full contactGroups fetch") << QList<FakeNetworkAccessManager::Scenario>{ fullContactGroupListFetchRequest } 0061 << QString() 0062 << People::ContactGroupList{ contactGroup1, contactGroup2 }; 0063 0064 QTest::newRow("partial contactGroups fetch") << QList<FakeNetworkAccessManager::Scenario>{ partialContactGroupListInitialFetchRequest, partialContactGroupListFollowupFetchRequest } 0065 << QString() 0066 << People::ContactGroupList{ contactGroup1, contactGroup2 }; 0067 } 0068 0069 void testFetch() 0070 { 0071 QFETCH(QList<FakeNetworkAccessManager::Scenario>, scenarios); 0072 QFETCH(QString, contactGroupsResourceName); 0073 QFETCH(ContactGroupList, contactGroupsFetched); 0074 0075 FakeNetworkAccessManagerFactory::get()->setScenarios(scenarios); 0076 0077 const auto account = AccountPtr::create(QStringLiteral("MockAccount"), QStringLiteral("MockToken")); 0078 const auto job = new ContactGroupFetchJob(contactGroupsResourceName, account); 0079 QVERIFY(execJob(job)); 0080 const auto items = job->items(); 0081 QCOMPARE(items.count(), contactGroupsFetched.count()); 0082 0083 for (auto i = 0; i < contactGroupsFetched.count(); ++i) { 0084 const auto returnedContactGroup = items.at(i).dynamicCast<ContactGroup>(); 0085 QVERIFY(returnedContactGroup); 0086 QCOMPARE(*returnedContactGroup, *contactGroupsFetched.at(i)); 0087 } 0088 } 0089 }; 0090 0091 } 0092 } 0093 0094 QTEST_GUILESS_MAIN(KGAPI2::People::ContactGroupFetchJobTest) 0095 0096 #include "contactgroupfetchjobtest.moc"