X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/05d389c56eb2b628c518b221d9ff8477227c64f0..e76bf5cb18ca46a0adc84ead3801726814cf6fd3:/src/tests/dolphinmainwindowtest.cpp diff --git a/src/tests/dolphinmainwindowtest.cpp b/src/tests/dolphinmainwindowtest.cpp index 70ec8dba0..40f8f6bcd 100644 --- a/src/tests/dolphinmainwindowtest.cpp +++ b/src/tests/dolphinmainwindowtest.cpp @@ -1,23 +1,11 @@ -/*************************************************************************** - * Copyright (C) 2017 by Elvis Angelaccio * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU 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 * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2017 Elvis Angelaccio + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #include "dolphinmainwindow.h" +#include "dolphinnewfilemenu.h" #include "dolphintabpage.h" #include "dolphintabwidget.h" #include "dolphinviewcontainer.h" @@ -25,23 +13,38 @@ #include #include +#include #include class DolphinMainWindowTest : public QObject { Q_OBJECT -private slots: +private Q_SLOTS: + void initTestCase(); void init(); void testClosingTabsWithSearchBoxVisible(); void testActiveViewAfterClosingSplitView_data(); void testActiveViewAfterClosingSplitView(); void testUpdateWindowTitleAfterClosingSplitView(); + void testUpdateWindowTitleAfterChangingSplitView(); + void testOpenInNewTabTitle(); + void testNewFileMenuEnabled_data(); + void testNewFileMenuEnabled(); + void testWindowTitle_data(); + void testWindowTitle(); + + private: QScopedPointer m_mainWindow; }; +void DolphinMainWindowTest::initTestCase() +{ + QStandardPaths::setTestModeEnabled(true); +} + void DolphinMainWindowTest::init() { m_mainWindow.reset(new DolphinMainWindow()); @@ -163,6 +166,103 @@ void DolphinMainWindowTest::testUpdateWindowTitleAfterClosingSplitView() QCOMPARE(currentUrlChangedSpy.count(), 1); } +// Test case for bug #402641 +void DolphinMainWindowTest::testUpdateWindowTitleAfterChangingSplitView() +{ + m_mainWindow->openDirectories({ QUrl::fromLocalFile(QDir::homePath()) }, false); + m_mainWindow->show(); + QVERIFY(QTest::qWaitForWindowExposed(m_mainWindow.data())); + QVERIFY(m_mainWindow->isVisible()); + + auto tabWidget = m_mainWindow->findChild("tabWidget"); + QVERIFY(tabWidget); + + // Open split view. + m_mainWindow->actionCollection()->action(QStringLiteral("split_view"))->trigger(); + QVERIFY(tabWidget->currentTabPage()->splitViewEnabled()); + + auto leftViewContainer = tabWidget->currentTabPage()->primaryViewContainer(); + auto rightViewContainer = tabWidget->currentTabPage()->secondaryViewContainer(); + + // Store old window title. + const auto oldTitle = m_mainWindow->windowTitle(); + + // Change URL in the right view and make sure the title gets updated. + rightViewContainer->setUrl(QUrl::fromLocalFile(QDir::rootPath())); + QVERIFY(m_mainWindow->windowTitle() != oldTitle); + + // Activate back the left view and check whether the old title gets restored. + leftViewContainer->setActive(true); + QCOMPARE(m_mainWindow->windowTitle(), oldTitle); +} + +// Test case for bug #397910 +void DolphinMainWindowTest::testOpenInNewTabTitle() +{ + m_mainWindow->openDirectories({ QUrl::fromLocalFile(QDir::homePath()) }, false); + m_mainWindow->show(); + QVERIFY(QTest::qWaitForWindowExposed(m_mainWindow.data())); + QVERIFY(m_mainWindow->isVisible()); + + auto tabWidget = m_mainWindow->findChild("tabWidget"); + QVERIFY(tabWidget); + + tabWidget->openNewTab(QUrl::fromLocalFile(QDir::tempPath())); + QCOMPARE(tabWidget->count(), 2); + QVERIFY(tabWidget->tabText(0) != tabWidget->tabText(1)); + if (!tabWidget->tabIcon(0).isNull() && !tabWidget->tabIcon(1).isNull()) { + QVERIFY(tabWidget->tabIcon(0).name() != tabWidget->tabIcon(1).name()); + } +} + +void DolphinMainWindowTest::testNewFileMenuEnabled_data() +{ + QTest::addColumn("activeViewUrl"); + QTest::addColumn("expectedEnabled"); + + QTest::newRow("home") << QUrl::fromLocalFile(QDir::homePath()) << true; + QTest::newRow("root") << QUrl::fromLocalFile(QDir::rootPath()) << false; + QTest::newRow("trash") << QUrl::fromUserInput(QStringLiteral("trash:/")) << false; +} + +void DolphinMainWindowTest::testNewFileMenuEnabled() +{ + QFETCH(QUrl, activeViewUrl); + m_mainWindow->openDirectories({ activeViewUrl }, false); + m_mainWindow->show(); + QVERIFY(QTest::qWaitForWindowExposed(m_mainWindow.data())); + QVERIFY(m_mainWindow->isVisible()); + + auto newFileMenu = m_mainWindow->findChild("new_menu"); + QVERIFY(newFileMenu); + + QFETCH(bool, expectedEnabled); + QTRY_COMPARE(newFileMenu->isEnabled(), expectedEnabled); +} + +void DolphinMainWindowTest::testWindowTitle_data() +{ + QTest::addColumn("activeViewUrl"); + QTest::addColumn("expectedWindowTitle"); + + // TODO: this test should enforce the english locale. + QTest::newRow("home") << QUrl::fromLocalFile(QDir::homePath()) << QStringLiteral("Home"); + QTest::newRow("home with trailing slash") << QUrl::fromLocalFile(QStringLiteral("%1/").arg(QDir::homePath())) << QStringLiteral("Home"); + QTest::newRow("trash") << QUrl::fromUserInput(QStringLiteral("trash:/")) << QStringLiteral("Trash"); +} + +void DolphinMainWindowTest::testWindowTitle() +{ + QFETCH(QUrl, activeViewUrl); + m_mainWindow->openDirectories({ activeViewUrl }, false); + m_mainWindow->show(); + QVERIFY(QTest::qWaitForWindowExposed(m_mainWindow.data())); + QVERIFY(m_mainWindow->isVisible()); + + QFETCH(QString, expectedWindowTitle); + QCOMPARE(m_mainWindow->windowTitle(), expectedWindowTitle); +} + QTEST_MAIN(DolphinMainWindowTest) #include "dolphinmainwindowtest.moc"