diff options
Diffstat (limited to 'src/tests')
| -rw-r--r-- | src/tests/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | src/tests/dolphinmainwindowtest.cpp | 62 | ||||
| -rw-r--r-- | src/tests/placesitemmodeltest.cpp | 82 |
3 files changed, 111 insertions, 39 deletions
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index c656173a8..07e4257a0 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -54,10 +54,14 @@ TEST_NAME viewpropertiestest LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test) # DolphinMainWindowTest -ecm_add_test(dolphinmainwindowtest.cpp +set(dolphinmainwindowtest_SRCS dolphinmainwindowtest.cpp) +qt5_add_resources(dolphinmainwindowtest_SRCS ${CMAKE_SOURCE_DIR}/src/dolphin.qrc) + +ecm_add_test(${dolphinmainwindowtest_SRCS} TEST_NAME dolphinmainwindowtest LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test) +# DragAndDropHelperTest ecm_add_test(draganddrophelpertest.cpp LINK_LIBRARIES dolphinprivate Qt5::Test) # PlacesItemModelTest diff --git a/src/tests/dolphinmainwindowtest.cpp b/src/tests/dolphinmainwindowtest.cpp index a31237f3c..eee387116 100644 --- a/src/tests/dolphinmainwindowtest.cpp +++ b/src/tests/dolphinmainwindowtest.cpp @@ -25,6 +25,7 @@ #include <KActionCollection> #include <QSignalSpy> +#include <QStandardPaths> #include <QTest> class DolphinMainWindowTest : public QObject @@ -32,14 +33,22 @@ class DolphinMainWindowTest : public QObject Q_OBJECT private slots: + void initTestCase(); void init(); void testClosingTabsWithSearchBoxVisible(); + void testActiveViewAfterClosingSplitView_data(); + void testActiveViewAfterClosingSplitView(); void testUpdateWindowTitleAfterClosingSplitView(); private: QScopedPointer<DolphinMainWindow> m_mainWindow; }; +void DolphinMainWindowTest::initTestCase() +{ + QStandardPaths::setTestModeEnabled(true); +} + void DolphinMainWindowTest::init() { m_mainWindow.reset(new DolphinMainWindow()); @@ -68,6 +77,58 @@ void DolphinMainWindowTest::testClosingTabsWithSearchBoxVisible() QCOMPARE(tabWidget->count(), 1); } +void DolphinMainWindowTest::testActiveViewAfterClosingSplitView_data() +{ + QTest::addColumn<bool>("closeLeftView"); + + QTest::newRow("close left view") << true; + QTest::newRow("close right view") << false; +} + +void DolphinMainWindowTest::testActiveViewAfterClosingSplitView() +{ + 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<DolphinTabWidget*>("tabWidget"); + QVERIFY(tabWidget); + QVERIFY(tabWidget->currentTabPage()->primaryViewContainer()); + QVERIFY(!tabWidget->currentTabPage()->secondaryViewContainer()); + + // Open split view. + m_mainWindow->actionCollection()->action(QStringLiteral("split_view"))->trigger(); + QVERIFY(tabWidget->currentTabPage()->splitViewEnabled()); + QVERIFY(tabWidget->currentTabPage()->secondaryViewContainer()); + + // Make sure the right view is the active one. + auto leftViewContainer = tabWidget->currentTabPage()->primaryViewContainer(); + auto rightViewContainer = tabWidget->currentTabPage()->secondaryViewContainer(); + QVERIFY(!leftViewContainer->isActive()); + QVERIFY(rightViewContainer->isActive()); + + QFETCH(bool, closeLeftView); + if (closeLeftView) { + // Activate left view. + leftViewContainer->setActive(true); + QVERIFY(leftViewContainer->isActive()); + QVERIFY(!rightViewContainer->isActive()); + + // Close left view. The secondary view (which was on the right) will become the primary one and must be active. + m_mainWindow->actionCollection()->action(QStringLiteral("split_view"))->trigger(); + QVERIFY(!leftViewContainer->isActive()); + QVERIFY(rightViewContainer->isActive()); + QCOMPARE(rightViewContainer, tabWidget->currentTabPage()->activeViewContainer()); + } else { + // Close right view. The left view will become active. + m_mainWindow->actionCollection()->action(QStringLiteral("split_view"))->trigger(); + QVERIFY(leftViewContainer->isActive()); + QVERIFY(!rightViewContainer->isActive()); + QCOMPARE(leftViewContainer, tabWidget->currentTabPage()->activeViewContainer()); + } +} + // Test case for bug #385111 void DolphinMainWindowTest::testUpdateWindowTitleAfterClosingSplitView() { @@ -99,6 +160,7 @@ void DolphinMainWindowTest::testUpdateWindowTitleAfterClosingSplitView() // Close split view. The secondary view (which was on the right) will become the primary one and must be active. m_mainWindow->actionCollection()->action(QStringLiteral("split_view"))->trigger(); + QVERIFY(!leftViewContainer->isActive()); QVERIFY(rightViewContainer->isActive()); QCOMPARE(rightViewContainer, tabWidget->currentTabPage()->activeViewContainer()); diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index 3263537f9..2e814220a 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -161,11 +161,15 @@ QStringList PlacesItemModelTest::initialUrls() const { static QStringList urls; if (urls.isEmpty()) { - urls << QDir::homePath() << QStringLiteral(KDE_ROOT_PATH) << QStringLiteral("trash:/") + urls << QDir::homePath() + << QDir::homePath() + QStringLiteral("/Desktop") + << QDir::homePath() + QStringLiteral("/Downloads") + << QStringLiteral(KDE_ROOT_PATH) << QStringLiteral("trash:/") << QStringLiteral("remote:/") - << QStringLiteral("timeline:/today") << QStringLiteral("timeline:/yesterday") << QStringLiteral("timeline:/thismonth") << QStringLiteral("timeline:/lastmonth") + << QStringLiteral("/media/nfs") + << QStringLiteral("timeline:/today") << QStringLiteral("timeline:/yesterday") << QStringLiteral("search:/documents") << QStringLiteral("search:/images") << QStringLiteral("search:/audio") << QStringLiteral("search:/videos") - << QStringLiteral("/media/nfs") << QStringLiteral("/foreign") + << QStringLiteral("/foreign") << QStringLiteral("/media/floppy0") << QStringLiteral("/media/XO-Y4") << QStringLiteral("/media/cdrom"); } return urls; @@ -228,7 +232,8 @@ void PlacesItemModelTest::init() void PlacesItemModelTest::cleanup() { - for (int i : m_tobeRemoved) { + const auto tobeRemoved = m_tobeRemoved; + for (const int i : tobeRemoved) { int before = m_model->count(); m_model->deleteItem(i); QTRY_COMPARE(m_model->count(), before - 1); @@ -278,21 +283,22 @@ void PlacesItemModelTest::testGroups() { const auto groups = m_model->groups(); + QCOMPARE(groups.size(), 6); QCOMPARE(groups.at(0).first, 0); QCOMPARE(groups.at(0).second.toString(), QStringLiteral("Places")); - QCOMPARE(groups.at(1).first, 3); + QCOMPARE(groups.at(1).first, 5); QCOMPARE(groups.at(1).second.toString(), QStringLiteral("Remote")); - QCOMPARE(groups.at(2).first, 4); + QCOMPARE(groups.at(2).first, 7); QCOMPARE(groups.at(2).second.toString(), QStringLiteral("Recently Saved")); - QCOMPARE(groups.at(3).first, 8); + QCOMPARE(groups.at(3).first, 9); QCOMPARE(groups.at(3).second.toString(), QStringLiteral("Search For")); - QCOMPARE(groups.at(4).first, 12); + QCOMPARE(groups.at(4).first, 13); QCOMPARE(groups.at(4).second.toString(), QStringLiteral("Devices")); QCOMPARE(groups.at(5).first, 14); @@ -314,7 +320,7 @@ void PlacesItemModelTest::testPlaceItem_data() QTest::newRow("Baloo - Documents") << QUrl("search:/documents") << false << true << QStringLiteral("Search For") << false; // baloo - timeline - QTest::newRow("Baloo - Last Month") << QUrl("timeline:/lastmonth") << false << true << QStringLiteral("Recently Saved") << false; + QTest::newRow("Baloo - Today") << QUrl("timeline:/today") << false << true << QStringLiteral("Recently Saved") << false; // devices QTest::newRow("Devices - Floppy") << QUrl("file:///media/floppy0") << false << false << QStringLiteral("Removable Devices") << false; @@ -348,7 +354,7 @@ void PlacesItemModelTest::testDeletePlace() // create a new place createPlaceItem(QStringLiteral("Temporary Dir"), tempUrl, QString()); - urls.insert(3, tempUrl.toLocalFile()); + urls.insert(5, tempUrl.toLocalFile()); // check if the new entry was created QTRY_COMPARE(itemsInsertedSpy.count(), 1); @@ -356,7 +362,7 @@ void PlacesItemModelTest::testDeletePlace() QTRY_COMPARE(model->count(), m_model->count()); // delete item - m_model->deleteItem(3); + m_model->deleteItem(5); // make sure that the new item is removed QTRY_COMPARE(itemsRemovedSpy.count(), 1); @@ -421,7 +427,7 @@ void PlacesItemModelTest::testDefaultViewProperties_data() QTest::newRow("Places - Audio") << QUrl("search:/audio") << DolphinView::DetailsView << false << QList<QByteArray>({"text", "artist", "album"}); // baloo - timeline - QTest::newRow("Baloo - Last Month") << QUrl("timeline:/lastmonth") << DolphinView::DetailsView << true << QList<QByteArray>({"text", "modificationtime"}); + QTest::newRow("Baloo - Today") << QUrl("timeline:/today") << DolphinView::DetailsView << true << QList<QByteArray>({"text", "modificationtime"}); // devices QTest::newRow("Devices - Floppy") << QUrl("file:///media/floppy0") << DolphinView::IconsView << true << QList<QByteArray>({"text"}); @@ -515,28 +521,28 @@ void PlacesItemModelTest::testSystemItems() QTRY_COMPARE(itemsInsertedSpy.count(), 1); // make sure the new place get removed - removePlaceAfter(3); + removePlaceAfter(5); QList<QVariant> args = itemsInsertedSpy.takeFirst(); KItemRangeList range = args.at(0).value<KItemRangeList>(); - QCOMPARE(range.first().index, 3); + QCOMPARE(range.first().index, 5); QCOMPARE(range.first().count, 1); - QVERIFY(!m_model->placesItem(3)->isSystemItem()); + QVERIFY(!m_model->placesItem(5)->isSystemItem()); QCOMPARE(m_model->count(), 18); QTest::qWait(300); // check if the removal signal is correct QSignalSpy itemsRemovedSpy(m_model, &PlacesItemModel::itemsRemoved); - m_model->deleteItem(3); + m_model->deleteItem(5); QTRY_COMPARE(itemsRemovedSpy.count(), 1); args = itemsRemovedSpy.takeFirst(); range = args.at(0).value<KItemRangeList>(); - QCOMPARE(range.first().index, 3); + QCOMPARE(range.first().index, 5); QCOMPARE(range.first().count, 1); QTRY_COMPARE(m_model->count(), 17); //cancel removal (it was removed above) - cancelPlaceRemoval(3); + cancelPlaceRemoval(5); } void PlacesItemModelTest::testEditBookmark() @@ -546,7 +552,7 @@ void PlacesItemModelTest::testEditBookmark() createPlaceItem(QStringLiteral("Temporary Dir"), QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)), QString()); // make sure that the new item will be removed later - removePlaceAfter(3); + removePlaceAfter(5); QSignalSpy itemsChangedSply(m_model, &PlacesItemModel::itemsChanged); @@ -582,7 +588,7 @@ void PlacesItemModelTest::testEditAfterCreation() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - removePlaceAfter(3); + removePlaceAfter(5); // modify place text PlacesItem *item = m_model->placesItem(3); @@ -612,7 +618,7 @@ void PlacesItemModelTest::testEditMetadata() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - removePlaceAfter(3); + removePlaceAfter(5); // modify place metadata PlacesItem *item = m_model->placesItem(3); @@ -642,10 +648,10 @@ void PlacesItemModelTest::testRefresh() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - removePlaceAfter(3); + removePlaceAfter(5); - PlacesItem *item = m_model->placesItem(3); - PlacesItem *sameItem = model->placesItem(3); + PlacesItem *item = m_model->placesItem(5); + PlacesItem *sameItem = model->placesItem(5); QCOMPARE(item->text(), sameItem->text()); // modify place text @@ -673,7 +679,7 @@ void PlacesItemModelTest::testIcons_data() QTest::newRow("Baloo - Documents") << QUrl("search:/documents") << QStringLiteral("folder-text"); // baloo - timeline - QTest::newRow("Baloo - Last Month") << QUrl("timeline:/lastmonth") << QStringLiteral("view-calendar-month"); + QTest::newRow("Baloo - Today") << QUrl("timeline:/today") << QStringLiteral("go-jump-today"); // devices QTest::newRow("Devices - Floppy") << QUrl("file:///media/floppy0") << QStringLiteral("blockdevice"); @@ -701,10 +707,10 @@ void PlacesItemModelTest::testDragAndDrop() QSignalSpy itemsRemovedSpy(m_model, &PlacesItemModel::itemsRemoved); CHECK_PLACES_URLS(initialUrls()); - // Move the KDE_ROOT_PATH at the end of the places list will case it to be moved to the end of the places group - QMimeData *dropData = createMimeData(QList<int>() << 1); + // Move the home directory to the end of the places group + QMimeData *dropData = createMimeData(QList<int>() << 0); m_model->dropMimeDataBefore(m_model->count() - 1, dropData); - urls.move(1, 2); + urls.move(0, 4); delete dropData; QTRY_COMPARE(itemsInsertedSpy.count(), 1); @@ -715,24 +721,24 @@ void PlacesItemModelTest::testDragAndDrop() range = args.at(0).value<KItemRangeList>(); QCOMPARE(range.size(), 1); QCOMPARE(range.at(0).count, 1); - QCOMPARE(range.at(0).index, 1); + QCOMPARE(range.at(0).index, 0); // insert intem in his group args = itemsInsertedSpy.takeFirst(); range = args.at(0).value<KItemRangeList>(); QCOMPARE(range.size(), 1); QCOMPARE(range.at(0).count, 1); - QCOMPARE(range.at(0).index, 2); + QCOMPARE(range.at(0).index, 4); CHECK_PLACES_URLS(urls); itemsInsertedSpy.clear(); itemsRemovedSpy.clear(); - // Move the KDE_ROOT_PATH to his original position - dropData = createMimeData(QList<int>() << 2); - m_model->dropMimeDataBefore(1, dropData); - urls.move(2, 1); + // Move home directory item back to its original position + dropData = createMimeData(QList<int>() << 4); + m_model->dropMimeDataBefore(0, dropData); + urls.move(4, 0); delete dropData; QTRY_COMPARE(itemsInsertedSpy.count(), 1); @@ -743,14 +749,14 @@ void PlacesItemModelTest::testDragAndDrop() range = args.at(0).value<KItemRangeList>(); QCOMPARE(range.size(), 1); QCOMPARE(range.at(0).count, 1); - QCOMPARE(range.at(0).index, 2); + QCOMPARE(range.at(0).index, 4); // insert intem in the requested position args = itemsInsertedSpy.takeFirst(); range = args.at(0).value<KItemRangeList>(); QCOMPARE(range.size(), 1); QCOMPARE(range.at(0).count, 1); - QCOMPARE(range.at(0).index, 1); + QCOMPARE(range.at(0).index, 0); CHECK_PLACES_URLS(urls); } @@ -814,10 +820,10 @@ void PlacesItemModelTest::renameAfterCreation() // create a new place createPlaceItem(QStringLiteral("Temporary Dir"), tempUrl, QString()); - urls.insert(3, tempUrl.toLocalFile()); + urls.insert(5, tempUrl.toLocalFile()); // make sure that the new item will be removed later - removePlaceAfter(3); + removePlaceAfter(5); CHECK_PLACES_URLS(urls); QCOMPARE(model->count(), m_model->count()); |
