// SPDX-License-Identifier: MIT #include "toolmodel.h" #include 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); QCOMPARE(model.mayRemove(QStringLiteral("touchpad-hold-tap")), true); QCOMPARE(model.mayRemove(QStringLiteral("missing-tool")), false); } 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); } void sortsAlphabeticallyRegardlessOfInstallState() { ToolModel model; const PackageRecord installed{QStringLiteral("touchpad-hold-tap"), QStringLiteral("1"), QStringLiteral("noarch"), QStringLiteral("Touchpad")}; const PackageRecord availableFirst{QStringLiteral("plasma-always-show-unlock"), QStringLiteral("1"), QStringLiteral("noarch"), QStringLiteral("Lock screen")}; const PackageRecord availableLast{QStringLiteral("touchpad-hold-tap"), QStringLiteral("1"), QStringLiteral("noarch"), QStringLiteral("Old touchpad summary")}; model.setPackages({installed}, {availableFirst, availableLast}); QCOMPARE(model.data(model.index(0), ToolModel::PackageNameRole).toString(), QStringLiteral("plasma-always-show-unlock")); QCOMPARE(model.data(model.index(1), ToolModel::PackageNameRole).toString(), QStringLiteral("touchpad-hold-tap")); QCOMPARE(model.data(model.index(1), ToolModel::SummaryRole).toString(), QStringLiteral("Touchpad")); } void makesInstalledToolsWithSettingsConfigurable() { ToolModel model; const PackageRecord shortcuts{QStringLiteral("plasma-task-group-shortcuts"), QStringLiteral("1"), QStringLiteral("x86_64"), QStringLiteral("Shortcuts")}; const PackageRecord touchpad{QStringLiteral("touchpad-hold-tap"), QStringLiteral("1"), QStringLiteral("noarch"), QStringLiteral("Touchpad")}; model.setPackages({shortcuts, touchpad}, {shortcuts, touchpad}); QCOMPARE(model.data(model.index(0), ToolModel::ConfigurableRole).toBool(), true); QCOMPARE(model.data(model.index(1), ToolModel::ConfigurableRole).toBool(), true); } }; QTEST_MAIN(ToolModelTest) #include "test-toolmodel.moc"