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"