1 /*  SPDX-License-Identifier: LGPL-2.0-or-later
2 
3     SPDX-FileCopyrightText: 2019 Christoph Cullmann <cullmann@kde.org>
4 
5     SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #include "sessions_action_test.h"
9 #include "kateapp.h"
10 #include "katesessionmanager.h"
11 #include "katesessionsaction.h"
12 
13 #include <QActionGroup>
14 #include <QCommandLineParser>
15 #include <QTemporaryDir>
16 #include <QtTestWidgets>
17 
QTEST_MAIN(KateSessionsActionTest)18 QTEST_MAIN(KateSessionsActionTest)
19 
20 void KateSessionsActionTest::initTestCase()
21 {
22     /**
23      * init resources from our static lib
24      */
25     Q_INIT_RESOURCE(kate);
26 
27     // we need an application object, as session loading will trigger modifications to that
28     m_app = new KateApp(QCommandLineParser());
29     m_app->sessionManager()->activateAnonymousSession();
30 }
31 
cleanupTestCase()32 void KateSessionsActionTest::cleanupTestCase()
33 {
34     delete m_app;
35 }
36 
init()37 void KateSessionsActionTest::init()
38 {
39     m_tempdir = new QTemporaryDir;
40     QVERIFY(m_tempdir->isValid());
41 
42     m_manager = new KateSessionManager(this, m_tempdir->path());
43     m_ac = new KateSessionsAction(QStringLiteral("menu"), this, m_manager);
44 }
45 
cleanup()46 void KateSessionsActionTest::cleanup()
47 {
48     delete m_ac;
49     delete m_manager;
50     delete m_tempdir;
51 }
basic()52 void KateSessionsActionTest::basic()
53 {
54     m_ac->slotAboutToShow();
55     QCOMPARE(m_ac->isEnabled(), false);
56 
57     QList<QAction *> actions = m_ac->sessionsGroup->actions();
58     QCOMPARE(actions.size(), 0);
59 }
60 
limit()61 void KateSessionsActionTest::limit()
62 {
63     for (int i = 0; i < 14; i++) {
64         m_manager->activateSession(QStringLiteral("session %1").arg(i));
65     }
66 
67     QCOMPARE(m_manager->activeSession()->isAnonymous(), false);
68     QCOMPARE(m_manager->sessionList().size(), 14);
69     QCOMPARE(m_ac->isEnabled(), true);
70 
71     m_ac->slotAboutToShow();
72 
73     QList<QAction *> actions = m_ac->sessionsGroup->actions();
74     QCOMPARE(actions.size(), 10);
75 }
76 
timesorted()77 void KateSessionsActionTest::timesorted()
78 {
79     /*
80     m_manager->activateSession("one", false, false);
81     m_manager->saveActiveSession();
82     m_manager->activateSession("two", false, false);
83     m_manager->saveActiveSession();
84     m_manager->activateSession("three", false, false);
85     m_manager->saveActiveSession();
86 
87     KateSessionList list = m_manager->sessionList();
88     QCOMPARE(list.size(), 3);
89 
90     TODO: any idea how to test this simply and not calling utime()?
91     */
92 }
93