File indexing completed on 2025-05-04 04:51:07
0001 /* 0002 SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "viewerpluginexternalscriptsloadjobtest.h" 0008 #include "../viewerpluginexternalscriptsloadjob.h" 0009 0010 #include <QTest> 0011 0012 ViewerPluginExternalScriptsLoadJobTest::ViewerPluginExternalScriptsLoadJobTest(QObject *parent) 0013 : QObject(parent) 0014 { 0015 } 0016 0017 ViewerPluginExternalScriptsLoadJobTest::~ViewerPluginExternalScriptsLoadJobTest() = default; 0018 0019 void ViewerPluginExternalScriptsLoadJobTest::shouldHaveDefaultValues() 0020 { 0021 ViewerPluginExternalScriptsLoadJob job; 0022 QVERIFY(job.scriptInfos().isEmpty()); 0023 QVERIFY(job.externalScriptsDirectories().isEmpty()); 0024 } 0025 0026 void ViewerPluginExternalScriptsLoadJobTest::shouldAssignDirectory() 0027 { 0028 ViewerPluginExternalScriptsLoadJob job; 0029 const QStringList dirs = QStringList() << QStringLiteral("test_dir"); 0030 job.setExternalScriptsDirectories(dirs); 0031 QCOMPARE(job.externalScriptsDirectories(), dirs); 0032 } 0033 0034 void ViewerPluginExternalScriptsLoadJobTest::shouldLoadDataInfo() 0035 { 0036 ViewerPluginExternalScriptsLoadJob job; 0037 const QStringList dirs = {QLatin1StringView(TEST_DATA_DIR) + QStringLiteral("/correctdesktop/")}; 0038 job.setExternalScriptsDirectories(dirs); 0039 QCOMPARE(job.externalScriptsDirectories(), dirs); 0040 job.start(); 0041 QCOMPARE(job.scriptInfos().count(), 1); 0042 const ViewerPluginExternalScriptInfo info = job.scriptInfos().constFirst(); 0043 QCOMPARE(info.commandLine(), QStringLiteral("foo-bla")); 0044 QCOMPARE(info.name(), QStringLiteral("foo")); 0045 QCOMPARE(info.description(), QStringLiteral("description")); 0046 QCOMPARE(info.executable(), QStringLiteral("bla")); 0047 QCOMPARE(info.icon(), QStringLiteral("blo")); 0048 QVERIFY(!info.isReadOnly()); 0049 const QString filenamepath = QStringLiteral(TEST_DATA_DIR) + QStringLiteral("/correctdesktop/first.desktop"); 0050 QCOMPARE(info.fileName(), filenamepath); 0051 } 0052 0053 void ViewerPluginExternalScriptsLoadJobTest::shouldNotLoadEmptyDesktop() 0054 { 0055 ViewerPluginExternalScriptsLoadJob job; 0056 const QStringList dirs = {QLatin1StringView(TEST_DATA_DIR) + QStringLiteral("/emptydesktop/")}; 0057 job.setExternalScriptsDirectories(dirs); 0058 0059 QDir directory(dirs.at(0)); 0060 QVERIFY(directory.exists()); 0061 const QDir::Filters filters = QDir::Files | QDir::Hidden | QDir::NoSymLinks; 0062 const QFileInfoList list = directory.entryInfoList(QStringList() << QStringLiteral("*.desktop"), filters); 0063 const int listSize(list.size()); 0064 QCOMPARE(listSize, 1); 0065 0066 QCOMPARE(job.externalScriptsDirectories(), dirs); 0067 job.start(); 0068 QCOMPARE(job.scriptInfos().count(), 0); 0069 } 0070 0071 void ViewerPluginExternalScriptsLoadJobTest::shouldNotLoadNoNameDesktop() 0072 { 0073 ViewerPluginExternalScriptsLoadJob job; 0074 const QStringList dirs = {QLatin1StringView(TEST_DATA_DIR) + QStringLiteral("/nonamedesktop/")}; 0075 job.setExternalScriptsDirectories(dirs); 0076 QCOMPARE(job.externalScriptsDirectories(), dirs); 0077 job.start(); 0078 QCOMPARE(job.scriptInfos().count(), 0); 0079 } 0080 0081 void ViewerPluginExternalScriptsLoadJobTest::shouldLoadTwoDifferentDesktopFile() 0082 { 0083 ViewerPluginExternalScriptsLoadJob job; 0084 const QStringList dirs = {QLatin1StringView(TEST_DATA_DIR) + QStringLiteral("/twodesktopfiles/")}; 0085 job.setExternalScriptsDirectories(dirs); 0086 QCOMPARE(job.externalScriptsDirectories(), dirs); 0087 job.start(); 0088 QCOMPARE(job.scriptInfos().count(), 2); 0089 } 0090 0091 void ViewerPluginExternalScriptsLoadJobTest::shouldNotLoadTwoSameNameDesktopFile() 0092 { 0093 ViewerPluginExternalScriptsLoadJob job; 0094 const QStringList dirs = {QLatin1StringView(TEST_DATA_DIR) + QStringLiteral("/twosamenamedesktopfiles/")}; 0095 job.setExternalScriptsDirectories(dirs); 0096 QCOMPARE(job.externalScriptsDirectories(), dirs); 0097 job.start(); 0098 QCOMPARE(job.scriptInfos().count(), 2); 0099 } 0100 0101 QTEST_MAIN(ViewerPluginExternalScriptsLoadJobTest) 0102 0103 #include "moc_viewerpluginexternalscriptsloadjobtest.cpp"