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 "peopletestutils.h"
0008 
0009 #include "people/contactgroup.h"
0010 #include "people/peopleservice.h"
0011 #include "people/person.h"
0012 #include "testutils.h"
0013 
0014 #include <QFile>
0015 #include <QJsonDocument>
0016 #include <QJsonObject>
0017 
0018 namespace KGAPI2 {
0019 namespace People {
0020 namespace TestUtils {
0021 
0022 PersonPtr personFromFile(const QString &path)
0023 {
0024     QFile f(path);
0025     VERIFY_RET(f.open(QIODevice::ReadOnly), {});
0026 
0027     const auto jsonObject = QJsonDocument::fromJson(f.readAll()).object();
0028     const auto person = Person::fromJSON(jsonObject);
0029     VERIFY_RET(person, {});
0030     return person;
0031 }
0032 
0033 ContactGroupPtr contactGroupFromFile(const QString &path)
0034 {
0035     QFile f(path);
0036     VERIFY_RET(f.open(QIODevice::ReadOnly), {});
0037 
0038     const auto jsonObject = QJsonDocument::fromJson(f.readAll()).object();
0039     auto group = ContactGroup::fromJSON(jsonObject);
0040     VERIFY_RET(group, {});
0041     return group;
0042 }
0043 
0044 PersonList connectionsFromFile(const QString &path)
0045 {
0046     QFile f(path);
0047     VERIFY_RET(f.open(QIODevice::ReadOnly), {});
0048 
0049     FeedData feedData;
0050     const auto connections = PeopleService::parseConnectionsJSONFeed(feedData, f.readAll());
0051 
0052     PersonList people;
0053     std::transform(connections.cbegin(), connections.cend(), std::back_inserter(people), [](const ObjectPtr &object) {
0054         return object.dynamicCast<Person>();
0055     });
0056 
0057     return people;
0058 }
0059 
0060 ContactGroupList contactGroupsFromFile(const QString &path)
0061 {
0062     QFile f(path);
0063     VERIFY_RET(f.open(QIODevice::ReadOnly), {});
0064 
0065     FeedData feedData;
0066     const auto contactGroups = PeopleService::parseContactGroupsJSONFeed(feedData, f.readAll());
0067 
0068     ContactGroupList convertedContactGroups;
0069     std::transform(contactGroups.cbegin(), contactGroups.cend(), std::back_inserter(convertedContactGroups), [](const ObjectPtr &object) {
0070         return object.dynamicCast<ContactGroup>();
0071     });
0072 
0073     return convertedContactGroups;
0074 }
0075 
0076 QByteArray rawPhotoDataFromPhotoRequestData(const QString &path)
0077 {
0078     QFile f(path);
0079     VERIFY_RET(f.open(QIODevice::ReadOnly), {});
0080 
0081     const auto jsonDocument = QJsonDocument::fromJson(f.readAll());
0082     VERIFY_RET(jsonDocument.isObject(), {});
0083 
0084     const auto jsonObject = jsonDocument.object();
0085     VERIFY_RET(jsonObject.contains(QStringLiteral("personFields")), {});
0086     VERIFY_RET(jsonObject.contains(QStringLiteral("photoBytes")), {});
0087 
0088     const auto rawData = jsonObject.value(QStringLiteral("photoBytes")).toString().toUtf8();
0089     return QByteArray::fromBase64(rawData);
0090 }
0091 
0092 PersonPtr personFromPhotoUpdateResponseFile(const QString &path)
0093 {
0094     QFile f(path);
0095     VERIFY_RET(f.open(QIODevice::ReadOnly), {});
0096 
0097     const auto jsonObject = QJsonDocument::fromJson(f.readAll()).object();
0098     const auto personObject = jsonObject.value(QStringLiteral("person")).toObject();
0099     const auto person = Person::fromJSON(personObject);
0100     VERIFY_RET(person, {});
0101     return person;
0102 }
0103 
0104 ContactGroupPtr contactGroupFromRequestDataFile(const QString &path)
0105 {
0106     QFile f(path);
0107     VERIFY_RET(f.open(QIODevice::ReadOnly), {});
0108 
0109     const auto jsonObject = QJsonDocument::fromJson(f.readAll()).object();
0110     const auto groupObject = jsonObject.value(QStringLiteral("contactGroup")).toObject();
0111     auto group = ContactGroup::fromJSON(groupObject);
0112     VERIFY_RET(group, {});
0113     return group;
0114 }
0115 
0116 } // TestUtils
0117 } // People
0118 } // KGAPI2