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 "session_manager_test.h"
0008 #include "kateapp.h"
0009 #include "katesessionmanager.h"
0010 
0011 #include <KConfig>
0012 #include <KLocalizedString>
0013 
0014 #include <QCommandLineParser>
0015 #include <QTemporaryDir>
0016 #include <QtTestWidgets>
0017 
0018 QTEST_MAIN(KateSessionManagerTest)
0019 
0020 KateSessionManagerTest::KateSessionManagerTest()
0021 {
0022     // ensure ui file can be found and the translation domain is set to avoid warnings
0023     qApp->setApplicationName(QStringLiteral("kate"));
0024     KLocalizedString::setApplicationDomain(QByteArrayLiteral("kate"));
0025 
0026     m_tempdir = new QTemporaryDir;
0027     QVERIFY(m_tempdir->isValid());
0028 
0029     // ensure we use some dummy config
0030     KConfig::setMainConfigName(m_tempdir->path() + QStringLiteral("/testconfigfilerc"));
0031 
0032     // create KWrite variant to avoid plugin loading!
0033     static QCommandLineParser parser;
0034     m_app = new KateApp(parser, KateApp::ApplicationKWrite, m_tempdir->path());
0035     m_app->sessionManager()->activateAnonymousSession();
0036     m_manager = m_app->sessionManager();
0037 }
0038 
0039 KateSessionManagerTest::~KateSessionManagerTest()
0040 {
0041     delete m_app;
0042     delete m_tempdir;
0043 }
0044 
0045 void KateSessionManagerTest::basic()
0046 {
0047     QCOMPARE(m_manager->sessionsDir(), m_tempdir->path());
0048     QCOMPARE(m_manager->sessionList().size(), 0);
0049     QVERIFY(m_manager->activateAnonymousSession());
0050     QVERIFY(m_manager->activeSession());
0051 }
0052 
0053 void KateSessionManagerTest::activateNewNamedSession()
0054 {
0055     const QString sessionName = QStringLiteral("hello_world");
0056 
0057     QVERIFY(m_manager->activateSession(sessionName, false, false));
0058     QCOMPARE(m_manager->sessionList().size(), 1);
0059 
0060     KateSession::Ptr s = m_manager->activeSession();
0061     QCOMPARE(s->name(), sessionName);
0062     QCOMPARE(s->isAnonymous(), false);
0063 
0064     const QString sessionFile = m_tempdir->path() + QLatin1Char('/') + sessionName + QLatin1String(".katesession");
0065     QCOMPARE(s->config()->name(), sessionFile);
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 KateSessionManagerTest::anonymousSessionFile()
0074 {
0075     const QString anonfile = QDir().cleanPath(m_tempdir->path() + QLatin1String("/../anonymous.katesession"));
0076     QVERIFY(m_manager->activateAnonymousSession());
0077     QVERIFY(m_manager->activeSession()->isAnonymous());
0078     QCOMPARE(m_manager->activeSession()->config()->name(), anonfile);
0079 }
0080 
0081 void KateSessionManagerTest::urlizeSessionFile()
0082 {
0083     const QString sessionName = QStringLiteral("hello world/#");
0084 
0085     m_manager->activateSession(sessionName, false, false);
0086     KateSession::Ptr s = m_manager->activeSession();
0087 
0088     const QString sessionFile = m_tempdir->path() + QLatin1String("/hello%20world%2F%23.katesession");
0089     QCOMPARE(s->config()->name(), sessionFile);
0090 
0091     // cleanup again for next test
0092     QVERIFY(m_manager->activateAnonymousSession());
0093     QVERIFY(m_manager->deleteSession(s));
0094     QCOMPARE(m_manager->sessionList().size(), 0);
0095 }
0096 
0097 void KateSessionManagerTest::renameSession()
0098 {
0099     m_manager->activateSession(QStringLiteral("foo"));
0100     KateSession::Ptr s = m_manager->activeSession();
0101 
0102     QCOMPARE(m_manager->sessionList().size(), 1);
0103 
0104     const QString newName = QStringLiteral("bar");
0105     m_manager->renameSession(s, newName); // non-collision path
0106     QCOMPARE(s->name(), newName);
0107     QCOMPARE(m_manager->sessionList().size(), 1);
0108     QCOMPARE(m_manager->sessionList().first(), s);
0109 
0110     // cleanup again for next test
0111     QVERIFY(m_manager->activateAnonymousSession());
0112     QVERIFY(m_manager->deleteSession(s));
0113     QCOMPARE(m_manager->sessionList().size(), 0);
0114 }
0115 
0116 #include "moc_session_manager_test.cpp"