File indexing completed on 2024-04-21 04:57:52

0001 /* This file is part of KDE
0002     SPDX-FileCopyrightText: 2007 David Faure <faure@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include <konqcloseditem.h>
0008 #include <qtest_gui.h>
0009 #include <QSignalSpy>
0010 #include <konqundomanager.h>
0011 #include <konqsessionmanager.h>
0012 #include <konqclosedwindowsmanager.h>
0013 
0014 class UndoManagerTest : public QObject
0015 {
0016     Q_OBJECT
0017 
0018 private Q_SLOTS:
0019     void initTestCase();
0020     void testAddClosedTabItem();
0021     void testUndoLastClosedTab();
0022 
0023 private:
0024     KonqClosedWindowsManager m_cwManager;
0025 };
0026 
0027 QTEST_MAIN(UndoManagerTest)
0028 
0029 void UndoManagerTest::initTestCase()
0030 {
0031     // Make sure we start clean
0032     QStandardPaths::setTestModeEnabled(true);
0033     KonqSessionManager::self()->disableAutosave();
0034     KonqUndoManager manager(&m_cwManager, nullptr);
0035     QSignalSpy spyUndoAvailable(&manager, SIGNAL(undoAvailable(bool)));
0036     QVERIFY(spyUndoAvailable.isValid());
0037     manager.clearClosedItemsList();
0038     QCOMPARE(spyUndoAvailable.count(), 1);
0039     QCOMPARE(spyUndoAvailable[0][0], QVariant(false));
0040     QVERIFY(!manager.undoAvailable());
0041 }
0042 
0043 void UndoManagerTest::testAddClosedTabItem()
0044 {
0045     KonqUndoManager manager(&m_cwManager, nullptr);
0046     QVERIFY(!manager.undoAvailable());
0047     KonqClosedTabItem *item = new KonqClosedTabItem(QStringLiteral("url"), m_cwManager.memoryStore(),
0048                                                     QStringLiteral("title"), 0, manager.newCommandSerialNumber());
0049     QCOMPARE(item->url(), QString("url"));
0050     QCOMPARE(item->serialNumber(), quint64(1001));
0051     QCOMPARE(item->pos(), 0);
0052     KConfigGroup configGroup = item->configGroup();
0053     QVERIFY(!configGroup.exists());
0054 
0055     QSignalSpy spyUndoAvailable(&manager, SIGNAL(undoAvailable(bool)));
0056     QVERIFY(spyUndoAvailable.isValid());
0057     QSignalSpy spyTextChanged(&manager, SIGNAL(undoTextChanged(QString)));
0058     QVERIFY(spyTextChanged.isValid());
0059     manager.addClosedTabItem(item);
0060 
0061     QVERIFY(manager.undoAvailable());
0062     QCOMPARE(spyUndoAvailable.count(), 1);
0063     QCOMPARE(spyTextChanged.count(), 1);
0064     QCOMPARE(manager.closedItemsList().count(), 1);
0065     configGroup.writeEntry("RootItem", "test");
0066     QVERIFY(!configGroup.keyList().isEmpty());
0067 
0068     // This requires a default constructor...
0069     //qRegisterMetaType<KonqClosedTabItem>("KonqClosedTabItem");
0070     QSignalSpy spyOpenClosedTab(&manager, SIGNAL(openClosedTab(KonqClosedTabItem)));
0071     manager.undo();
0072     QCOMPARE(spyUndoAvailable.count(), 2);
0073     QVERIFY(!manager.undoAvailable());
0074     QCOMPARE(spyOpenClosedTab.count(), 1);
0075     QCOMPARE(manager.closedItemsList().count(), 0);
0076     QVERIFY(configGroup.keyList().isEmpty()); // was deleted by the KonqClosedTabItem destructor
0077 }
0078 
0079 void UndoManagerTest::testUndoLastClosedTab()
0080 {
0081 
0082 }
0083 
0084 #include "undomanagertest.moc"