File indexing completed on 2024-05-12 05:52:03
0001 /* 0002 SPDX-FileCopyrightText: 2019 Christoph Cullmann <cullmann@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "sessions_action_test.h" 0008 #include "kateapp.h" 0009 #include "katesessionmanager.h" 0010 #include "katesessionsaction.h" 0011 0012 #include <QActionGroup> 0013 #include <QCommandLineParser> 0014 #include <QSignalSpy> 0015 #include <QTemporaryDir> 0016 #include <QtTestWidgets> 0017 0018 #include <KLocalizedString> 0019 0020 QTEST_MAIN(KateSessionsActionTest) 0021 0022 KateSessionsActionTest::KateSessionsActionTest() 0023 { 0024 // ensure ui file can be found and the translation domain is set to avoid warnings 0025 qApp->setApplicationName(QStringLiteral("kate")); 0026 KLocalizedString::setApplicationDomain(QByteArrayLiteral("kate")); 0027 0028 m_tempdir = new QTemporaryDir; 0029 QVERIFY(m_tempdir->isValid()); 0030 0031 // ensure we use some dummy config 0032 KConfig::setMainConfigName(m_tempdir->path() + QStringLiteral("/testconfigfilerc")); 0033 0034 // create KWrite variant to avoid plugin loading! 0035 static QCommandLineParser parser; 0036 m_app = new KateApp(parser, KateApp::ApplicationKWrite, m_tempdir->path()); 0037 m_app->sessionManager()->activateAnonymousSession(); 0038 m_manager = m_app->sessionManager(); 0039 m_ac = new KateSessionsAction(QStringLiteral("menu"), this, m_manager, false); 0040 } 0041 0042 KateSessionsActionTest::~KateSessionsActionTest() 0043 { 0044 delete m_ac; 0045 delete m_app; 0046 delete m_tempdir; 0047 } 0048 0049 void KateSessionsActionTest::basic() 0050 { 0051 m_ac->slotAboutToShow(); 0052 QCOMPARE(m_ac->isEnabled(), false); 0053 0054 QList<QAction *> actions = m_ac->sessionsGroup->actions(); 0055 QCOMPARE(actions.size(), 0); 0056 } 0057 0058 void KateSessionsActionTest::deleteActiveSession() 0059 { 0060 m_manager->activateSession(QStringLiteral("foo")); 0061 KateSession::Ptr s = m_manager->activeSession(); 0062 0063 QCOMPARE(m_manager->sessionList().size(), 1); 0064 m_manager->deleteSession(s); 0065 QCOMPARE(m_manager->sessionList().size(), 1); 0066 0067 // cleanup again for next test 0068 QVERIFY(m_manager->activateAnonymousSession()); 0069 QVERIFY(m_manager->deleteSession(s)); 0070 QCOMPARE(m_manager->sessionList().size(), 0); 0071 } 0072 0073 void KateSessionsActionTest::deleteSession() 0074 { 0075 m_manager->activateSession(QStringLiteral("foo")); 0076 KateSession::Ptr s = m_manager->activeSession(); 0077 0078 m_manager->activateSession(QStringLiteral("bar")); 0079 KateSession::Ptr s2 = m_manager->activeSession(); 0080 0081 QCOMPARE(m_manager->sessionList().size(), 2); 0082 0083 m_manager->deleteSession(s); 0084 QCOMPARE(m_manager->sessionList().size(), 1); 0085 0086 // cleanup again for next test 0087 QVERIFY(m_manager->activateAnonymousSession()); 0088 QVERIFY(m_manager->deleteSession(s2)); 0089 QCOMPARE(m_manager->sessionList().size(), 0); 0090 } 0091 0092 void KateSessionsActionTest::saveActiveSessionWithAnynomous() 0093 { 0094 QVERIFY(m_manager->activateAnonymousSession()); 0095 QVERIFY(m_manager->activeSession()->isAnonymous()); 0096 QVERIFY(m_manager->sessionList().empty()); 0097 0098 QCOMPARE(m_manager->saveActiveSession(), true); 0099 QCOMPARE(m_manager->activeSession()->isAnonymous(), true); 0100 QCOMPARE(m_manager->activeSession()->name(), QString()); 0101 QCOMPARE(m_manager->sessionList().size(), 0); 0102 } 0103 0104 void KateSessionsActionTest::deletingSessionFilesUnderRunningApp() 0105 { 0106 m_manager->activateSession(QStringLiteral("foo")); 0107 m_manager->activateSession(QStringLiteral("bar")); 0108 0109 QVERIFY(m_manager->sessionList().size() == 2); 0110 QVERIFY(m_manager->activeSession()->name() == QLatin1String("bar")); 0111 0112 const QString file = m_tempdir->path() + QLatin1String("/foo.katesession"); 0113 QVERIFY(QFile::remove(file)); 0114 0115 // wait for notification about external session list change 0116 QSignalSpy spy(m_manager, &KateSessionManager::sessionListChanged); 0117 QVERIFY(spy.wait()); 0118 0119 QCOMPARE(m_manager->activeSession()->name(), QLatin1String("bar")); 0120 } 0121 0122 void KateSessionsActionTest::startNonEmpty() 0123 { 0124 m_manager->activateSession(QStringLiteral("foo")); 0125 m_manager->activateSession(QStringLiteral("bar")); 0126 0127 KateSessionManager m(this, m_tempdir->path()); 0128 QCOMPARE(m.sessionList().size(), 2); 0129 } 0130 0131 void KateSessionsActionTest::limit() 0132 { 0133 for (int i = 0; i < 14; i++) { 0134 m_manager->copySession(m_manager->activeSession(), QStringLiteral("session %1").arg(i)); 0135 } 0136 0137 QVERIFY(m_manager->sessionList().size() > 10); 0138 QCOMPARE(m_ac->isEnabled(), true); 0139 0140 m_ac->slotAboutToShow(); 0141 0142 QList<QAction *> actions = m_ac->sessionsGroup->actions(); 0143 QCOMPARE(actions.size(), 10); 0144 } 0145 0146 #include "moc_sessions_action_test.cpp"