File indexing completed on 2024-04-28 04:57:42
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Alex Kuznetsov <alex@vxpro.io> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include <QDate> 0008 #include <QTest> 0009 0010 #include "../KioActivities.h" 0011 #include "../KioActivitiesApi.h" 0012 #include <utils/d_ptr_implementation.h> 0013 class FixActivitiesProtocol 0014 { 0015 public: 0016 D_PTRC(ActivitiesProtocolApi); // using this to test a macro in the main class 0017 0018 FixActivitiesProtocol() 0019 { 0020 } 0021 0022 ActivitiesProtocolApi::PathType pathType(const QUrl &url, QString *activity, QString *filePath) const 0023 { 0024 return d->pathType(url, activity, filePath); 0025 } 0026 0027 QString mangledPath(const QString &path) const 0028 { 0029 return d->mangledPath(path); 0030 } 0031 0032 QString demangledPath(const QString &mangled) const 0033 { 0034 return d->demangledPath(mangled); 0035 } 0036 0037 KIO::UDSEntry activityEntry(const QString &activity) 0038 { 0039 return d->activityEntry(activity); 0040 } 0041 0042 KIO::UDSEntry filesystemEntry(const QString &path) 0043 { 0044 return d->filesystemEntry(path); 0045 } 0046 }; 0047 0048 class ActivityBasicTest : public QObject 0049 { 0050 Q_OBJECT 0051 0052 private: 0053 QString filer, filerName; 0054 0055 private Q_SLOTS: 0056 void initTestCase() 0057 { 0058 qDebug("Init activity tests"); 0059 0060 filerName = "filerActivity"; 0061 0062 QDir d = QDir::temp(); 0063 filer = d.absoluteFilePath(filerName); 0064 QFile f(filer); 0065 f.open(QIODevice::WriteOnly); 0066 f.write("hello"); 0067 } 0068 0069 void ActivityPathItemTest() 0070 { 0071 FixActivitiesProtocol fix; 0072 QString activity; 0073 QString filepath; 0074 QString surl = "activities:/current/Zm9v"; // activities:/activityName/base64(filepath) 0075 QUrl url; 0076 url.setUrl(surl); 0077 0078 auto result = fix.pathType(url, &activity, &filepath); 0079 0080 QVERIFY(result == ActivitiesProtocolApi::PathType::ActivityPathItem); 0081 QCOMPARE(activity, "current"); 0082 QCOMPARE(filepath, QString("foo")); 0083 } 0084 0085 void ActivityRootItemTest() 0086 { 0087 FixActivitiesProtocol fix; 0088 QString activity; 0089 QString filepath; 0090 QString surl = "activities:/current"; 0091 QUrl url; 0092 url.setUrl(surl); 0093 0094 auto result = fix.pathType(url, &activity, &filepath); 0095 0096 QVERIFY(result == ActivitiesProtocolApi::PathType::ActivityRootItem); 0097 QCOMPARE(activity, "current"); 0098 } 0099 0100 void RootItemTest() 0101 { 0102 FixActivitiesProtocol fix; 0103 QString activity; 0104 QString filepath; 0105 QString surl = "activities:/"; 0106 QUrl url; 0107 url.setUrl(surl); 0108 0109 auto result = fix.pathType(url, &activity, &filepath); 0110 0111 QVERIFY(result == ActivitiesProtocolApi::PathType::RootItem); 0112 QCOMPARE(activity, ""); 0113 } 0114 0115 void mangleTest() 0116 { 0117 FixActivitiesProtocol fix; 0118 QString surl = "foo"; 0119 auto result = fix.mangledPath(surl); 0120 QCOMPARE(result, "Zm9v"); 0121 } 0122 0123 void demangleTest() 0124 { 0125 FixActivitiesProtocol fix; 0126 QString surl = "Zm9v"; 0127 auto result = fix.demangledPath(surl); 0128 QCOMPARE(result, "foo"); 0129 } 0130 0131 void activityEntryTest() 0132 { 0133 FixActivitiesProtocol fix; 0134 QString act("current"); 0135 auto result = fix.activityEntry(act); 0136 0137 QCOMPARE(result.count(), 8); 0138 0139 QVERIFY(result.contains(KIO::UDSEntry::UDS_NAME)); 0140 QVERIFY(result.contains(KIO::UDSEntry::UDS_DISPLAY_NAME)); 0141 QVERIFY(result.contains(KIO::UDSEntry::UDS_DISPLAY_TYPE)); 0142 QVERIFY(result.contains(KIO::UDSEntry::UDS_ICON_NAME)); 0143 QVERIFY(result.contains(KIO::UDSEntry::UDS_FILE_TYPE)); 0144 QVERIFY(result.contains(KIO::UDSEntry::UDS_MIME_TYPE)); 0145 QVERIFY(result.contains(KIO::UDSEntry::UDS_ACCESS)); 0146 QVERIFY(result.contains(KIO::UDSEntry::UDS_USER)); 0147 0148 QCOMPARE(result.stringValue(KIO::UDSEntry::UDS_NAME), act); 0149 QCOMPARE(result.numberValue(KIO::UDSEntry::UDS_FILE_TYPE), S_IFDIR); 0150 QCOMPARE(result.stringValue(KIO::UDSEntry::UDS_MIME_TYPE), QStringLiteral("inode/directory")); 0151 QCOMPARE(result.numberValue(KIO::UDSEntry::UDS_ACCESS), 0500); 0152 } 0153 0154 void fileSystemEntryTest() 0155 { 0156 FixActivitiesProtocol fix; 0157 auto result = fix.filesystemEntry(filer); 0158 0159 QVERIFY(result.contains(KIO::UDSEntry::UDS_NAME)); 0160 QVERIFY(result.contains(KIO::UDSEntry::UDS_DISPLAY_NAME)); 0161 QVERIFY(result.contains(KIO::UDSEntry::UDS_TARGET_URL)); 0162 QVERIFY(result.contains(KIO::UDSEntry::UDS_LOCAL_PATH)); 0163 0164 auto mfiler = fix.mangledPath(filer); 0165 0166 QCOMPARE(result.stringValue(KIO::UDSEntry::UDS_NAME), mfiler); 0167 QCOMPARE(result.stringValue(KIO::UDSEntry::UDS_DISPLAY_NAME), filerName); 0168 QUrl ufiler = QUrl::fromLocalFile(filer); 0169 QCOMPARE(result.stringValue(KIO::UDSEntry::UDS_TARGET_URL), ufiler.toString()); 0170 QCOMPARE(result.stringValue(KIO::UDSEntry::UDS_LOCAL_PATH), filer); 0171 } 0172 0173 void cleanupTestCase() 0174 { 0175 QFile::remove(filer); 0176 qDebug("Activites test complete."); 0177 } 0178 }; 0179 0180 QTEST_MAIN(ActivityBasicTest) 0181 0182 #include "ActivityBasicTest.moc"