From dec7016c0d52129340a5b47f6de4df8af5115e21 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 13:05:55 +0200 Subject: [PATCH 01/10] Add test cases for enabled status of DolphinNewFileMenu Summary: Root and Trash test cases are currently failing because of commit e133c4557ecc37ed3f7e1b9418306aa8cc516865. Reviewers: #dolphin Subscribers: kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D16005 --- src/dolphinmainwindow.cpp | 1 + src/tests/dolphinmainwindowtest.cpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 3e3803d68e..a93405f537 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -1066,6 +1066,7 @@ void DolphinMainWindow::setupActions() { // setup 'File' menu m_newFileMenu = new DolphinNewFileMenu(actionCollection(), this); + m_newFileMenu->setObjectName("newFileMenu"); QMenu* menu = m_newFileMenu->menu(); menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New")); menu->setIcon(QIcon::fromTheme(QStringLiteral("document-new"))); diff --git a/src/tests/dolphinmainwindowtest.cpp b/src/tests/dolphinmainwindowtest.cpp index eee3871167..0dc3301241 100644 --- a/src/tests/dolphinmainwindowtest.cpp +++ b/src/tests/dolphinmainwindowtest.cpp @@ -18,6 +18,7 @@ ***************************************************************************/ #include "dolphinmainwindow.h" +#include "dolphinnewfilemenu.h" #include "dolphintabpage.h" #include "dolphintabwidget.h" #include "dolphinviewcontainer.h" @@ -39,6 +40,8 @@ private slots: void testActiveViewAfterClosingSplitView_data(); void testActiveViewAfterClosingSplitView(); void testUpdateWindowTitleAfterClosingSplitView(); + void testNewFileMenuEnabled_data(); + void testNewFileMenuEnabled(); private: QScopedPointer m_mainWindow; @@ -170,6 +173,31 @@ void DolphinMainWindowTest::testUpdateWindowTitleAfterClosingSplitView() QCOMPARE(currentUrlChangedSpy.count(), 1); } +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("newFileMenu"); + QVERIFY(newFileMenu); + + QFETCH(bool, expectedEnabled); + QCOMPARE(newFileMenu->isEnabled(), expectedEnabled); +} + QTEST_MAIN(DolphinMainWindowTest) #include "dolphinmainwindowtest.moc" From 5e8b892a519b8d1fef58a747fafb5846b7fa3492 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 13:19:17 +0200 Subject: [PATCH 02/10] Fix disabling of DolphinNewFileMenu Summary: Commit e133c4557ecc37ed3f7e1b9 doesn't work because the actions in the KNewFileMenu are added only when we show the context menu for the first time. Fixes the failing test cases in D16005. Test Plan: Run `dolphinmainwindowtest` and open the context menu in different places (Home, Root, Trash, `bluetooth:/`, etc.) Reviewers: #dolphin Subscribers: kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D16006 --- src/dolphinmainwindow.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index a93405f537..38537d92a9 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -457,10 +457,6 @@ void DolphinMainWindow::updateNewMenu() m_newFileMenu->setViewShowsHiddenFiles(activeViewContainer()->view()->hiddenFilesShown()); m_newFileMenu->checkUpToDate(); m_newFileMenu->setPopupFiles(activeViewContainer()->url()); - - // If we're in the trash, also disable all the 'create new' items - // TODO: remove this once https://phabricator.kde.org/T8234 is implemented - slotWriteStateChanged(m_activeViewContainer->view()->url().scheme() != QLatin1String("trash")); } void DolphinMainWindow::createDirectory() @@ -808,10 +804,9 @@ void DolphinMainWindow::slotHandleUrlStatFinished(KJob* job) void DolphinMainWindow::slotWriteStateChanged(bool isFolderWritable) { - const auto actions = m_newFileMenu->menu()->actions(); - for (auto menuItem : actions) { - menuItem->setEnabled(isFolderWritable); - } + // trash:/ is writable but we don't want to create new items in it. + // TODO: remove the trash check once https://phabricator.kde.org/T8234 is implemented + newFileMenu()->setEnabled(isFolderWritable && m_activeViewContainer->url().scheme() != QLatin1String("trash")); } void DolphinMainWindow::openContextMenu(const QPoint& pos, From 9760f9607d48555452557f22749b291fd3981b76 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 16:50:27 +0200 Subject: [PATCH 03/10] [PlacesItemModelTest] Check whether Desktop and Download folders exist KFilePlacesModel creates the Desktop and Downloads bookmarks only if their folder exists. This should hopefully fix the failing test on the CI (actual count = 15, expected count = 17), since the CI runs in docker and probably doesn't have those two folders by default. --- src/tests/placesitemmodeltest.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index 2e814220a1..e0fdb1d865 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -85,6 +85,7 @@ private: PlacesItemModel* m_model; QSet m_tobeRemoved; QMap m_interfacesMap; + int m_expectedModelCount = 15; void setBalooEnabled(bool enabled); int indexOf(const QUrl &url); @@ -227,7 +228,7 @@ void PlacesItemModelTest::init() m_model = new PlacesItemModel(); // WORKAROUND: need to wait for bookmark to load, check: PlacesItemModel::updateBookmarks QTest::qWait(300); - QCOMPARE(m_model->count(), 17); + QCOMPARE(m_model->count(), m_expectedModelCount); } void PlacesItemModelTest::cleanup() @@ -261,6 +262,14 @@ void PlacesItemModelTest::initTestCase() QVERIFY(QFile::remove(bookmarsFileName)); } + if (QDir(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)).exists()) { + m_expectedModelCount++; + } + + if (QDir(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)).exists()) { + m_expectedModelCount++; + } + qRegisterMetaType(); qRegisterMetaType(); } From 92157f6d7d1d6a2226ee3ae7db4bed2e50ee371e Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 17:07:56 +0200 Subject: [PATCH 04/10] Follow-up of commit 9760f9607d Also drop the hardcoded model count all over the place. --- src/tests/placesitemmodeltest.cpp | 35 ++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index e0fdb1d865..9f5e49d38a 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -86,6 +86,8 @@ private: QSet m_tobeRemoved; QMap m_interfacesMap; int m_expectedModelCount = 15; + bool m_hasDesktopFolder = false; + bool m_hasDownloadsFolder = false; void setBalooEnabled(bool enabled); int indexOf(const QUrl &url); @@ -162,10 +164,17 @@ QStringList PlacesItemModelTest::initialUrls() const { static QStringList urls; if (urls.isEmpty()) { - urls << QDir::homePath() - << QDir::homePath() + QStringLiteral("/Desktop") - << QDir::homePath() + QStringLiteral("/Downloads") - << QStringLiteral(KDE_ROOT_PATH) << QStringLiteral("trash:/") + urls << QDir::homePath(); + + if (m_hasDesktopFolder) { + urls << QDir::homePath() + QStringLiteral("/Desktop"); + } + + if (m_hasDownloadsFolder) { + urls << QDir::homePath() + QStringLiteral("/Downloads"); + } + + urls << QStringLiteral(KDE_ROOT_PATH) << QStringLiteral("trash:/") << QStringLiteral("remote:/") << QStringLiteral("/media/nfs") << QStringLiteral("timeline:/today") << QStringLiteral("timeline:/yesterday") @@ -263,10 +272,12 @@ void PlacesItemModelTest::initTestCase() } if (QDir(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)).exists()) { + m_hasDesktopFolder = true; m_expectedModelCount++; } if (QDir(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)).exists()) { + m_hasDownloadsFolder = true; m_expectedModelCount++; } @@ -375,7 +386,7 @@ void PlacesItemModelTest::testDeletePlace() // make sure that the new item is removed QTRY_COMPARE(itemsRemovedSpy.count(), 1); - QTRY_COMPARE(m_model->count(), 17); + QTRY_COMPARE(m_model->count(), m_expectedModelCount); CHECK_PLACES_URLS(initialUrls()); QTRY_COMPARE(model->count(), m_model->count()); } @@ -392,7 +403,7 @@ void PlacesItemModelTest::testTearDownDevice() auto teardownAction = m_model->teardownAction(index); QVERIFY(teardownAction); - QCOMPARE(m_model->count(), 17); + QCOMPARE(m_model->count(), m_expectedModelCount); QSignalSpy spyItemsRemoved(m_model, &PlacesItemModel::itemsRemoved); fakeManager()->call(QStringLiteral("unplug"), "/org/kde/solid/fakehw/volume_part1_size_993284096"); @@ -408,7 +419,7 @@ void PlacesItemModelTest::testTearDownDevice() QSignalSpy spyItemsInserted(m_model, &PlacesItemModel::itemsInserted); fakeManager()->call(QStringLiteral("plug"), "/org/kde/solid/fakehw/volume_part1_size_993284096"); - QTRY_COMPARE(m_model->count(), 17); + QTRY_COMPARE(m_model->count(), m_expectedModelCount); QCOMPARE(spyItemsInserted.count(), 1); index = indexOf(mediaUrl); @@ -458,12 +469,12 @@ void PlacesItemModelTest::testDefaultViewProperties() void PlacesItemModelTest::testClear() { - QCOMPARE(m_model->count(), 17); + QCOMPARE(m_model->count(), m_expectedModelCount); m_model->clear(); QCOMPARE(m_model->count(), 0); QCOMPARE(m_model->hiddenCount(), 0); m_model->refresh(); - QTRY_COMPARE(m_model->count(), 17); + QTRY_COMPARE(m_model->count(), m_expectedModelCount); } void PlacesItemModelTest::testHideItem() @@ -511,12 +522,12 @@ void PlacesItemModelTest::testHideItem() // mark model to hide invisible items m_model->setHiddenItemsShown(true); - QTRY_COMPARE(m_model->count(), 17); + QTRY_COMPARE(m_model->count(), m_expectedModelCount); } void PlacesItemModelTest::testSystemItems() { - QCOMPARE(m_model->count(), 17); + QCOMPARE(m_model->count(), m_expectedModelCount); for (int r = 0; r < m_model->count(); r++) { QCOMPARE(m_model->placesItem(r)->isSystemItem(), !m_model->placesItem(r)->device().isValid()); } @@ -548,7 +559,7 @@ void PlacesItemModelTest::testSystemItems() range = args.at(0).value(); QCOMPARE(range.first().index, 5); QCOMPARE(range.first().count, 1); - QTRY_COMPARE(m_model->count(), 17); + QTRY_COMPARE(m_model->count(), m_expectedModelCount); //cancel removal (it was removed above) cancelPlaceRemoval(5); From 9204f3272bf7232df86d5da1824f7355c9c0b9c4 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 17:26:28 +0200 Subject: [PATCH 05/10] [PlacesItemModelTest] Fix testGroups() test case The test was also assuming that the Desktop and Downloads folders are always available, which isn't the case. --- src/tests/placesitemmodeltest.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index 9f5e49d38a..8415a58d0a 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -302,26 +302,32 @@ void PlacesItemModelTest::testModelSort() void PlacesItemModelTest::testGroups() { const auto groups = m_model->groups(); - + int expectedGroupSize = 3; + if (m_hasDesktopFolder) { + expectedGroupSize++; + } + if (m_hasDownloadsFolder) { + expectedGroupSize++; + } QCOMPARE(groups.size(), 6); QCOMPARE(groups.at(0).first, 0); QCOMPARE(groups.at(0).second.toString(), QStringLiteral("Places")); - QCOMPARE(groups.at(1).first, 5); + QCOMPARE(groups.at(1).first, expectedGroupSize); QCOMPARE(groups.at(1).second.toString(), QStringLiteral("Remote")); - QCOMPARE(groups.at(2).first, 7); + QCOMPARE(groups.at(2).first, expectedGroupSize + 2); QCOMPARE(groups.at(2).second.toString(), QStringLiteral("Recently Saved")); - QCOMPARE(groups.at(3).first, 9); + QCOMPARE(groups.at(3).first, expectedGroupSize + 4); QCOMPARE(groups.at(3).second.toString(), QStringLiteral("Search For")); - QCOMPARE(groups.at(4).first, 13); + QCOMPARE(groups.at(4).first, expectedGroupSize + 8); QCOMPARE(groups.at(4).second.toString(), QStringLiteral("Devices")); - QCOMPARE(groups.at(5).first, 14); + QCOMPARE(groups.at(5).first, expectedGroupSize + 9); QCOMPARE(groups.at(5).second.toString(), QStringLiteral("Removable Devices")); } From 0abba76eea63d3939e9942c92a3377d401d3c9b5 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 17:41:54 +0200 Subject: [PATCH 06/10] [PlacesItemModelTest] Fix testDeletePlace() If the Desktop or Downloads folder is missing, using 5 as index would be wrong. --- src/tests/placesitemmodeltest.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index 8415a58d0a..c47575c46b 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -378,9 +378,17 @@ void PlacesItemModelTest::testDeletePlace() PlacesItemModel *model = new PlacesItemModel(); + int tempDirIndex = 3; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + // create a new place createPlaceItem(QStringLiteral("Temporary Dir"), tempUrl, QString()); - urls.insert(5, tempUrl.toLocalFile()); + urls.insert(tempDirIndex, tempUrl.toLocalFile()); // check if the new entry was created QTRY_COMPARE(itemsInsertedSpy.count(), 1); @@ -388,7 +396,7 @@ void PlacesItemModelTest::testDeletePlace() QTRY_COMPARE(model->count(), m_model->count()); // delete item - m_model->deleteItem(5); + m_model->deleteItem(tempDirIndex); // make sure that the new item is removed QTRY_COMPARE(itemsRemovedSpy.count(), 1); From 26d02ecbdb8b95bff5371a4deb414b7076cc28b8 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 17:49:36 +0200 Subject: [PATCH 07/10] [PlacesItemModelTest] Fix testTearDownDevice() --- src/tests/placesitemmodeltest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index c47575c46b..695aa580a6 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -421,7 +421,7 @@ void PlacesItemModelTest::testTearDownDevice() QSignalSpy spyItemsRemoved(m_model, &PlacesItemModel::itemsRemoved); fakeManager()->call(QStringLiteral("unplug"), "/org/kde/solid/fakehw/volume_part1_size_993284096"); - QTRY_COMPARE(m_model->count(), 16); + QTRY_COMPARE(m_model->count(), m_expectedModelCount - 1); QCOMPARE(spyItemsRemoved.count(), 1); const QList spyItemsRemovedArgs = spyItemsRemoved.takeFirst(); const KItemRangeList removedRange = spyItemsRemovedArgs.at(0).value(); From e99827293bea035b99e4f1e1881821ce378bd253 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 18:01:00 +0200 Subject: [PATCH 08/10] [PlacesItemModelTest] Fix testHideItem() --- src/tests/placesitemmodeltest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index 695aa580a6..e045e9198f 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -511,7 +511,7 @@ void PlacesItemModelTest::testHideItem() item->setHidden(true); // check if items removed was fired - QTRY_COMPARE(m_model->count(), 16); + QTRY_COMPARE(m_model->count(), m_expectedModelCount - 1); QCOMPARE(spyItemsRemoved.count(), 1); spyItemsRemovedArgs = spyItemsRemoved.takeFirst(); removedRange = spyItemsRemovedArgs.at(0).value(); From 4a56d21fb1e98cd41e2e82a68ef3d23687c233e2 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 19:28:56 +0200 Subject: [PATCH 09/10] [PlacesItemModel] Fix testSystemItems() --- src/tests/placesitemmodeltest.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index e045e9198f..3a99204e45 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -541,6 +541,14 @@ void PlacesItemModelTest::testHideItem() void PlacesItemModelTest::testSystemItems() { + int tempDirIndex = 3; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + QCOMPARE(m_model->count(), m_expectedModelCount); for (int r = 0; r < m_model->count(); r++) { QCOMPARE(m_model->placesItem(r)->isSystemItem(), !m_model->placesItem(r)->device().isValid()); @@ -555,28 +563,28 @@ void PlacesItemModelTest::testSystemItems() QTRY_COMPARE(itemsInsertedSpy.count(), 1); // make sure the new place get removed - removePlaceAfter(5); + removePlaceAfter(tempDirIndex); QList args = itemsInsertedSpy.takeFirst(); KItemRangeList range = args.at(0).value(); - QCOMPARE(range.first().index, 5); + QCOMPARE(range.first().index, tempDirIndex); QCOMPARE(range.first().count, 1); - QVERIFY(!m_model->placesItem(5)->isSystemItem()); - QCOMPARE(m_model->count(), 18); + QVERIFY(!m_model->placesItem(tempDirIndex)->isSystemItem()); + QCOMPARE(m_model->count(), m_expectedModelCount + 1); QTest::qWait(300); // check if the removal signal is correct QSignalSpy itemsRemovedSpy(m_model, &PlacesItemModel::itemsRemoved); - m_model->deleteItem(5); + m_model->deleteItem(tempDirIndex); QTRY_COMPARE(itemsRemovedSpy.count(), 1); args = itemsRemovedSpy.takeFirst(); range = args.at(0).value(); - QCOMPARE(range.first().index, 5); + QCOMPARE(range.first().index, tempDirIndex); QCOMPARE(range.first().count, 1); QTRY_COMPARE(m_model->count(), m_expectedModelCount); //cancel removal (it was removed above) - cancelPlaceRemoval(5); + cancelPlaceRemoval(tempDirIndex); } void PlacesItemModelTest::testEditBookmark() From e2f93a28294fd0575cf8427f31a2fba4f8d6b099 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sun, 7 Oct 2018 19:41:54 +0200 Subject: [PATCH 10/10] [PlacesItemModelTest] More index-related fixes Again, we cannot assume the Desktop and Downloads places are always around. --- src/tests/placesitemmodeltest.cpp | 74 +++++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 13 deletions(-) diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index 3a99204e45..545bba89c7 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -589,12 +589,20 @@ void PlacesItemModelTest::testSystemItems() void PlacesItemModelTest::testEditBookmark() { + int tempDirIndex = 3; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + QScopedPointer other(new PlacesItemModel()); createPlaceItem(QStringLiteral("Temporary Dir"), QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)), QString()); // make sure that the new item will be removed later - removePlaceAfter(5); + removePlaceAfter(tempDirIndex); QSignalSpy itemsChangedSply(m_model, &PlacesItemModel::itemsChanged); @@ -619,6 +627,14 @@ void PlacesItemModelTest::testEditBookmark() void PlacesItemModelTest::testEditAfterCreation() { + int tempDirIndex = 3; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted); @@ -630,7 +646,7 @@ void PlacesItemModelTest::testEditAfterCreation() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - removePlaceAfter(5); + removePlaceAfter(tempDirIndex); // modify place text PlacesItem *item = m_model->placesItem(3); @@ -648,6 +664,14 @@ void PlacesItemModelTest::testEditAfterCreation() void PlacesItemModelTest::testEditMetadata() { + int tempDirIndex = 3; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted); @@ -660,7 +684,7 @@ void PlacesItemModelTest::testEditMetadata() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - removePlaceAfter(5); + removePlaceAfter(tempDirIndex); // modify place metadata PlacesItem *item = m_model->placesItem(3); @@ -679,6 +703,14 @@ void PlacesItemModelTest::testEditMetadata() void PlacesItemModelTest::testRefresh() { + int tempDirIndex = 3; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted); @@ -690,10 +722,10 @@ void PlacesItemModelTest::testRefresh() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - removePlaceAfter(5); + removePlaceAfter(tempDirIndex); - PlacesItem *item = m_model->placesItem(5); - PlacesItem *sameItem = model->placesItem(5); + PlacesItem *item = m_model->placesItem(tempDirIndex); + PlacesItem *sameItem = model->placesItem(tempDirIndex); QCOMPARE(item->text(), sameItem->text()); // modify place text @@ -742,6 +774,14 @@ void PlacesItemModelTest::testIcons() void PlacesItemModelTest::testDragAndDrop() { + int lastIndex = 2; // last index of places group + if (m_hasDesktopFolder) { + lastIndex++; + } + if (m_hasDownloadsFolder) { + lastIndex++; + } + QList args; KItemRangeList range; QStringList urls = initialUrls(); @@ -752,7 +792,7 @@ void PlacesItemModelTest::testDragAndDrop() // Move the home directory to the end of the places group QMimeData *dropData = createMimeData(QList() << 0); m_model->dropMimeDataBefore(m_model->count() - 1, dropData); - urls.move(0, 4); + urls.move(0, lastIndex); delete dropData; QTRY_COMPARE(itemsInsertedSpy.count(), 1); @@ -770,7 +810,7 @@ void PlacesItemModelTest::testDragAndDrop() range = args.at(0).value(); QCOMPARE(range.size(), 1); QCOMPARE(range.at(0).count, 1); - QCOMPARE(range.at(0).index, 4); + QCOMPARE(range.at(0).index, lastIndex); CHECK_PLACES_URLS(urls); @@ -778,9 +818,9 @@ void PlacesItemModelTest::testDragAndDrop() itemsRemovedSpy.clear(); // Move home directory item back to its original position - dropData = createMimeData(QList() << 4); + dropData = createMimeData(QList() << lastIndex); m_model->dropMimeDataBefore(0, dropData); - urls.move(4, 0); + urls.move(lastIndex, 0); delete dropData; QTRY_COMPARE(itemsInsertedSpy.count(), 1); @@ -791,7 +831,7 @@ void PlacesItemModelTest::testDragAndDrop() range = args.at(0).value(); QCOMPARE(range.size(), 1); QCOMPARE(range.at(0).count, 1); - QCOMPARE(range.at(0).index, 4); + QCOMPARE(range.at(0).index, lastIndex); // insert intem in the requested position args = itemsInsertedSpy.takeFirst(); @@ -853,6 +893,14 @@ void PlacesItemModelTest::testDuplicatedEntries() void PlacesItemModelTest::renameAfterCreation() { + int tempDirIndex = 3; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QStringList urls = initialUrls(); PlacesItemModel *model = new PlacesItemModel(); @@ -862,10 +910,10 @@ void PlacesItemModelTest::renameAfterCreation() // create a new place createPlaceItem(QStringLiteral("Temporary Dir"), tempUrl, QString()); - urls.insert(5, tempUrl.toLocalFile()); + urls.insert(tempDirIndex, tempUrl.toLocalFile()); // make sure that the new item will be removed later - removePlaceAfter(5); + removePlaceAfter(tempDirIndex); CHECK_PLACES_URLS(urls); QCOMPARE(model->count(), m_model->count());