1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
/*
Copyright (c) 2016 David Faure <faure@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "grantleethememanager.h"
#include <qtest.h>
#include <QStandardPaths>
#include <QMenu>
#include <KConfigGroup>
#include <KSharedConfig>
#include <KActionCollection>
#include <KActionMenu>
class GrantleeThemeManagerTest : public QObject
{
Q_OBJECT
public:
explicit GrantleeThemeManagerTest(QObject *parent = nullptr)
: QObject(parent)
{
}
private Q_SLOTS:
void initTestCase();
void updateActionList();
void destructionOrderTest();
};
void GrantleeThemeManagerTest::initTestCase()
{
QStandardPaths::setTestModeEnabled(true);
// Point the test to our dummy icon theme
KConfigGroup cg(KSharedConfig::openConfig(), "Icons");
cg.writeEntry("Theme", "dummyTheme");
qputenv("XDG_DATA_DIRS", GRANTLEETHEME_DATA_DIR);
}
void GrantleeThemeManagerTest::updateActionList()
{
KActionCollection coll(this);
GrantleeTheme::ThemeManager *manager(new GrantleeTheme::ThemeManager(QStringLiteral("Stuff"), QStringLiteral("filename.testdesktop"), &coll, QStringLiteral("themes")));
QCOMPARE(manager->themes().count(), 2);
QVERIFY(!manager->actionForTheme()); // Bug? No "default" theme.
QActionGroup actionGroup(this);
manager->setActionGroup(&actionGroup);
KActionMenu menu(this);
manager->setThemeMenu(&menu);
QCOMPARE(menu.menu()->actions().count(), 4); // 2 themes + separator + download
KActionMenu menu2(this);
manager->setThemeMenu(&menu2);
QCOMPARE(menu2.menu()->actions().count(), 4);
QVERIFY(QMetaObject::invokeMethod(manager, "directoryChanged"));
QCOMPARE(menu2.menu()->actions().count(), 4);
delete manager; // deleted while the action group still exists
}
void GrantleeThemeManagerTest::destructionOrderTest()
{
KActionCollection coll(this);
GrantleeTheme::ThemeManager *manager(new GrantleeTheme::ThemeManager(QStringLiteral("Stuff"), QStringLiteral("filename.testdesktop"), &coll, QStringLiteral("themes")));
QCOMPARE(manager->themes().count(), 2);
QVERIFY(!manager->actionForTheme()); // Bug? No "default" theme.
QActionGroup *actionGroup = new QActionGroup(this);
manager->setActionGroup(actionGroup);
KActionMenu *menu = new KActionMenu(this);
manager->setThemeMenu(menu);
QCOMPARE(menu->menu()->actions().count(), 4); // 2 themes + separator + download
KActionMenu *menu2 = new KActionMenu(this);
manager->setThemeMenu(menu2);
QCOMPARE(menu2->menu()->actions().count(), 4);
QVERIFY(QMetaObject::invokeMethod(manager, "directoryChanged"));
QCOMPARE(menu2->menu()->actions().count(), 4);
manager->setThemeMenu(nullptr);
delete menu;
delete menu2;
manager->setActionGroup(nullptr);
delete actionGroup;
delete manager; // deleted with the action group already deleted (as happens in kmail)
}
QTEST_MAIN(GrantleeThemeManagerTest)
#include "grantleethememanagertest.moc"
|