X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/eca160ae5a2dbd5590e4bae22cddde488dbacf74..7e10da6e2e0171fa30a1162e5767be2b95937c21:/src/tests/dolphinmainwindowtest.cpp diff --git a/src/tests/dolphinmainwindowtest.cpp b/src/tests/dolphinmainwindowtest.cpp index 37e042219..d7cb763fd 100644 --- a/src/tests/dolphinmainwindowtest.cpp +++ b/src/tests/dolphinmainwindowtest.cpp @@ -30,6 +30,10 @@ #include #include +#include +#include +#include +#include #include #include @@ -49,6 +53,8 @@ private Q_SLOTS: void testOpenInNewTabTitle(); void testNewFileMenuEnabled_data(); void testNewFileMenuEnabled(); + void testCreateFileAction(); + void testCreateFileActionRequiresWritePermission(); void testWindowTitle_data(); void testWindowTitle(); void testFocusLocationBar(); @@ -372,6 +378,74 @@ void DolphinMainWindowTest::testNewFileMenuEnabled() QTRY_COMPARE(newFileMenu->isEnabled(), expectedEnabled); } +void DolphinMainWindowTest::testCreateFileAction() +{ + QScopedPointer testDir{new TestDir()}; + QString testDirUrl(QDir::cleanPath(testDir->url().toString())); + m_mainWindow->openDirectories({testDirUrl}, false); + m_mainWindow->show(); + QVERIFY(QTest::qWaitForWindowExposed(m_mainWindow.data())); + QVERIFY(m_mainWindow->isVisible()); + + QCOMPARE(m_mainWindow->m_activeViewContainer->view()->items().count(), 0); + + auto createFileAction = m_mainWindow->actionCollection()->action(QStringLiteral("create_file")); + QTRY_COMPARE(createFileAction->isEnabled(), true); + + createFileAction->setShortcut(QKeySequence(Qt::CTRL | Qt::ALT | Qt::Key_N)); + + QSignalSpy createFileActionSpy(createFileAction, &QAction::triggered); + + QTest::keyClick(QApplication::activeWindow(), Qt::Key_N, Qt::ControlModifier | Qt::AltModifier); + + QTRY_COMPARE(createFileActionSpy.count(), 1); + + QTRY_VERIFY(QApplication::activeModalWidget() != nullptr); + + auto newFileDialog = QApplication::activeModalWidget()->focusWidget(); + QTest::keyClick(newFileDialog, Qt::Key_X); + QTest::keyClick(newFileDialog, Qt::Key_Y); + QTest::keyClick(newFileDialog, Qt::Key_Z); + QTest::keyClick(newFileDialog, Qt::Key_Enter); + + QTRY_COMPARE(m_mainWindow->m_activeViewContainer->view()->items().count(), 1); + + QFile file(testDir->url().toLocalFile() + "/xyz.txt"); + QVERIFY(file.exists()); + QCOMPARE(file.size(), 0); +} + + void DolphinMainWindowTest::testCreateFileActionRequiresWritePermission() +{ + QScopedPointer testDir{new TestDir()}; + QString testDirUrl(QDir::cleanPath(testDir->url().toString())); + auto testDirAsFile = QFile(testDir->url().toLocalFile()); + + // make test dir read only + QVERIFY(testDirAsFile.setPermissions(QFileDevice::ReadOwner)); + + m_mainWindow->openDirectories({testDirUrl}, false); + m_mainWindow->show(); + QVERIFY(QTest::qWaitForWindowExposed(m_mainWindow.data())); + QVERIFY(m_mainWindow->isVisible()); + + QCOMPARE(m_mainWindow->m_activeViewContainer->view()->items().count(), 0); + + auto createFileAction = m_mainWindow->actionCollection()->action(QStringLiteral("create_file")); + QTRY_COMPARE(createFileAction->isEnabled(), false); + + createFileAction->setShortcut(QKeySequence(Qt::CTRL | Qt::ALT | Qt::Key_N)); + QTest::keyClick(QApplication::activeWindow(), Qt::Key_N, Qt::ControlModifier | Qt::AltModifier); + + QTRY_COMPARE(QApplication::activeModalWidget(), nullptr); + + QTRY_COMPARE(m_mainWindow->m_activeViewContainer->view()->items().count(), 0); + + QTRY_COMPARE(createFileAction->isEnabled(), false); + + QVERIFY(m_mainWindow->isVisible()); +} + void DolphinMainWindowTest::testWindowTitle_data() { QTest::addColumn("activeViewUrl"); @@ -846,7 +920,7 @@ void DolphinMainWindowTest::testAccessibilityTree() // after going forwards which is probably not intended. } } - QCOMPARE_GE(testedObjectsSizeAfterTraversingForwards, 12); // The test did not reach many objects while using the Tab key to move through Dolphin. Did the + QCOMPARE_GE(testedObjectsSizeAfterTraversingForwards, 11); // The test did not reach many objects while using the Tab key to move through Dolphin. Did the // test run correctly? }