Warning, file /pim/grantleetheme/autotest/grantleethememanagertest.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2016 David Faure <faure@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "grantleethememanager.h" 0008 0009 #include <QMenu> 0010 #include <QStandardPaths> 0011 #include <qtest.h> 0012 0013 #include <KActionCollection> 0014 #include <KActionMenu> 0015 #include <KConfigGroup> 0016 #include <KSharedConfig> 0017 #include <QActionGroup> 0018 0019 class GrantleeThemeManagerTest : public QObject 0020 { 0021 Q_OBJECT 0022 public: 0023 explicit GrantleeThemeManagerTest(QObject *parent = nullptr) 0024 : QObject(parent) 0025 { 0026 } 0027 0028 private Q_SLOTS: 0029 void initTestCase(); 0030 void updateActionList(); 0031 void destructionOrderTest(); 0032 }; 0033 0034 void GrantleeThemeManagerTest::initTestCase() 0035 { 0036 QStandardPaths::setTestModeEnabled(true); 0037 0038 // Point the test to our dummy icon theme 0039 KConfigGroup cg(KSharedConfig::openConfig(), QStringLiteral("Icons")); 0040 cg.writeEntry("Theme", "dummyTheme"); 0041 qputenv("XDG_DATA_DIRS", GRANTLEETHEME_DATA_DIR); 0042 } 0043 0044 void GrantleeThemeManagerTest::updateActionList() 0045 { 0046 KActionCollection coll(this); 0047 auto manager(new GrantleeTheme::ThemeManager(QStringLiteral("Stuff"), QStringLiteral("filename.testdesktop"), &coll, QStringLiteral("themes"))); 0048 QCOMPARE(manager->themes().count(), 2); 0049 QVERIFY(!manager->actionForTheme()); // Bug? No "default" theme. 0050 0051 QActionGroup actionGroup(this); 0052 manager->setActionGroup(&actionGroup); 0053 0054 KActionMenu menu(this); 0055 manager->setThemeMenu(&menu); 0056 QCOMPARE(menu.menu()->actions().count(), 4); // 2 themes + separator + download 0057 0058 KActionMenu menu2(this); 0059 manager->setThemeMenu(&menu2); 0060 QCOMPARE(menu2.menu()->actions().count(), 4); 0061 0062 QVERIFY(QMetaObject::invokeMethod(manager, "directoryChanged")); 0063 QCOMPARE(menu2.menu()->actions().count(), 4); 0064 0065 delete manager; // deleted while the action group still exists 0066 } 0067 0068 void GrantleeThemeManagerTest::destructionOrderTest() 0069 { 0070 KActionCollection coll(this); 0071 auto manager(new GrantleeTheme::ThemeManager(QStringLiteral("Stuff"), QStringLiteral("filename.testdesktop"), &coll, QStringLiteral("themes"))); 0072 QCOMPARE(manager->themes().count(), 2); 0073 QVERIFY(!manager->actionForTheme()); // Bug? No "default" theme. 0074 0075 auto actionGroup = new QActionGroup(this); 0076 manager->setActionGroup(actionGroup); 0077 0078 auto menu = new KActionMenu(this); 0079 manager->setThemeMenu(menu); 0080 QCOMPARE(menu->menu()->actions().count(), 4); // 2 themes + separator + download 0081 0082 auto menu2 = new KActionMenu(this); 0083 manager->setThemeMenu(menu2); 0084 QCOMPARE(menu2->menu()->actions().count(), 4); 0085 0086 QVERIFY(QMetaObject::invokeMethod(manager, "directoryChanged")); 0087 QCOMPARE(menu2->menu()->actions().count(), 4); 0088 0089 manager->setThemeMenu(nullptr); 0090 delete menu; 0091 delete menu2; 0092 manager->setActionGroup(nullptr); 0093 delete actionGroup; 0094 delete manager; // deleted with the action group already deleted (as happens in kmail) 0095 } 0096 0097 QTEST_MAIN(GrantleeThemeManagerTest) 0098 #include "grantleethememanagertest.moc"