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"