Add Fedora Tools settings module

This commit is contained in:
ajp_anton
2026-09-05 02:53:11 +00:00
parent 19df3c3a75
commit d6f30c5735
23 changed files with 1354 additions and 4 deletions
@@ -0,0 +1,18 @@
# SPDX-License-Identifier: MIT
add_executable(test-packageutils
test-packageutils.cpp
../src/packageutils.cpp
)
target_include_directories(test-packageutils PRIVATE ../src)
target_link_libraries(test-packageutils PRIVATE Qt6::Core Qt6::Test)
add_test(NAME packageutils COMMAND test-packageutils)
add_executable(test-toolmodel
test-toolmodel.cpp
../src/toolmodel.cpp
../src/packageutils.cpp
)
target_include_directories(test-toolmodel PRIVATE ../src)
target_link_libraries(test-toolmodel PRIVATE Qt6::Core Qt6::Test)
add_test(NAME toolmodel COMMAND test-toolmodel)
@@ -0,0 +1,35 @@
// SPDX-License-Identifier: MIT
#include "packageutils.h"
#include <QTest>
class PackageUtilsTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void parsesQueryOutput()
{
const auto records = parsePackageRecords(
"touchpad-hold-tap\t0.1.0-6.fc44\tnoarch\tTouchpad gesture\n"
"broken line\n");
QCOMPARE(records.size(), 1);
QCOMPARE(records.first().name, QStringLiteral("touchpad-hold-tap"));
QCOMPARE(records.first().version, QStringLiteral("0.1.0-6.fc44"));
QCOMPARE(records.first().summary, QStringLiteral("Touchpad gesture"));
}
void validatesPackageNames()
{
QVERIFY(isValidPackageName(QStringLiteral("plasma-task-group-shortcuts")));
QVERIFY(!isValidPackageName(QStringLiteral("--installroot=/tmp")));
QVERIFY(!isValidPackageName(QStringLiteral("tool; reboot")));
QVERIFY(!isValidPackageName(QStringLiteral("Tool")));
}
};
QTEST_MAIN(PackageUtilsTest)
#include "test-packageutils.moc"
@@ -0,0 +1,51 @@
// SPDX-License-Identifier: MIT
#include "toolmodel.h"
#include <QTest>
class ToolModelTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void mergesInstalledAndAvailablePackages()
{
ToolModel model;
const PackageRecord installed{QStringLiteral("touchpad-hold-tap"), QStringLiteral("0.1.0-5.fc44"), QStringLiteral("noarch"), QStringLiteral("Gesture")};
const PackageRecord available{QStringLiteral("touchpad-hold-tap"), QStringLiteral("0.1.0-6.fc44"), QStringLiteral("noarch"), QStringLiteral("Gesture")};
model.setPackages({installed}, {available}, {QStringLiteral("touchpad-hold-tap")});
QCOMPARE(model.rowCount(), 1);
const QModelIndex index = model.index(0);
QCOMPARE(model.data(index, ToolModel::InstalledRole).toBool(), true);
QCOMPARE(model.data(index, ToolModel::AvailableRole).toBool(), true);
QCOMPARE(model.data(index, ToolModel::UpdateAvailableRole).toBool(), true);
QCOMPARE(model.mayInstall(QStringLiteral("touchpad-hold-tap")), true);
}
void doesNotGuessUpdatesFromDifferentVersionStrings()
{
ToolModel model;
const PackageRecord installed{QStringLiteral("touchpad-hold-tap"), QStringLiteral("0.1.0-7.fc44"), QStringLiteral("noarch"), QStringLiteral("Gesture")};
const PackageRecord available{QStringLiteral("touchpad-hold-tap"), QStringLiteral("0.1.0-6.fc44"), QStringLiteral("noarch"), QStringLiteral("Gesture")};
model.setPackages({installed}, {available});
QCOMPARE(model.data(model.index(0), ToolModel::UpdateAvailableRole).toBool(), false);
}
void makesFingerprintControllerConfigurable()
{
ToolModel model;
const PackageRecord package{QStringLiteral("plasma-fingerprint-workaround"), QStringLiteral("0.1.0-2.fc44"), QStringLiteral("noarch"), QStringLiteral("Fingerprint")};
model.setPackages({package}, {package});
QCOMPARE(model.data(model.index(0), ToolModel::ConfigurableRole).toBool(), true);
}
};
QTEST_MAIN(ToolModelTest)
#include "test-toolmodel.moc"