X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c9dd3478be21bc8a4bbd6102b1d66997df180d5f..9cd042a86c:/src/tests/placesitemmodeltest.cpp diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index c05ce6882..cc66c5aa0 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -29,6 +29,7 @@ #include #include +#include "dolphin_generalsettings.h" #include "panels/places/placesitemmodel.h" #include "panels/places/placesitem.h" #include "views/viewproperties.h" @@ -36,18 +37,6 @@ Q_DECLARE_METATYPE(KItemRangeList) Q_DECLARE_METATYPE(KItemRange) -#ifdef Q_OS_WIN -//c:\ as root for windows -#define KDE_ROOT_PATH "C:\\" -#else -#define KDE_ROOT_PATH "/" -#endif - -namespace -{ - constexpr int TIMEOUT = 10000; -} - static QString bookmarksFile() { return QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/user-places.xbel"; @@ -90,8 +79,9 @@ private: PlacesItemModel* m_model; QSet m_tobeRemoved; QMap m_interfacesMap; - int m_expectedModelCount = 15; + int m_expectedModelCount = 14; bool m_hasDesktopFolder = false; + bool m_hasDocumentsFolder = false; bool m_hasDownloadsFolder = false; void setBalooEnabled(bool enabled); @@ -103,8 +93,8 @@ private: void createPlaceItem(const QString &text, const QUrl &url, const QString &icon); void schedulePlaceRemoval(int index); void cancelPlaceRemoval(int index); - void removeTestUserData(); QMimeData *createMimeData(const QList &indexes) const; + QTemporaryDir m_tempHomeDir; }; #define CHECK_PLACES_URLS(urls) \ @@ -175,11 +165,15 @@ QStringList PlacesItemModelTest::initialUrls() const urls << QDir::homePath() + QStringLiteral("/Desktop"); } + if (m_hasDocumentsFolder) { + urls << QDir::homePath() + QStringLiteral("/Documents"); + } + if (m_hasDownloadsFolder) { urls << QDir::homePath() + QStringLiteral("/Downloads"); } - urls << QStringLiteral(KDE_ROOT_PATH) << QStringLiteral("trash:/") + urls << QStringLiteral("trash:/") << QStringLiteral("remote:/") << QStringLiteral("/media/nfs") << QStringLiteral("timeline:/today") << QStringLiteral("timeline:/yesterday") @@ -205,15 +199,6 @@ void PlacesItemModelTest::cancelPlaceRemoval(int index) m_tobeRemoved.remove(index); } -void PlacesItemModelTest::removeTestUserData() -{ - // user hardcoded path to avoid removal of any user personal data - QDir dir(QStringLiteral("/home/renato/.qttest/share/placesitemmodeltest")); - if (dir.exists()) { - QVERIFY(dir.removeRecursively()); - } -} - QMimeData *PlacesItemModelTest::createMimeData(const QList &indexes) const { QByteArray itemData; @@ -256,14 +241,15 @@ void PlacesItemModelTest::cleanup() m_tobeRemoved.clear(); delete m_model; m_model = nullptr; - removeTestUserData(); } void PlacesItemModelTest::initTestCase() { + QVERIFY(m_tempHomeDir.isValid()); + QVERIFY(qputenv("HOME", m_tempHomeDir.path().toUtf8())); + QVERIFY(qputenv("KDE_FORK_SLAVES", "yes")); + QStandardPaths::setTestModeEnabled(true); - // remove test user data - removeTestUserData(); const QString fakeHw = QFINDTESTDATA("data/fakecomputer.xml"); QVERIFY(!fakeHw.isEmpty()); @@ -281,6 +267,11 @@ void PlacesItemModelTest::initTestCase() m_expectedModelCount++; } + if (QDir(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)).exists()) { + m_hasDocumentsFolder = true; + m_expectedModelCount++; + } + if (QDir(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)).exists()) { m_hasDownloadsFolder = true; m_expectedModelCount++; @@ -294,9 +285,6 @@ void PlacesItemModelTest::cleanupTestCase() { qDeleteAll(m_interfacesMap); QFile::remove(bookmarksFile()); - - // Remove any previous properties file - removeTestUserData(); } void PlacesItemModelTest::testModelSort() @@ -307,12 +295,15 @@ void PlacesItemModelTest::testModelSort() void PlacesItemModelTest::testGroups() { const auto groups = m_model->groups(); - int expectedGroupSize = 3; + int expectedRemoteIndex = 2; if (m_hasDesktopFolder) { - expectedGroupSize++; + expectedRemoteIndex++; + } + if (m_hasDocumentsFolder) { + expectedRemoteIndex++; } if (m_hasDownloadsFolder) { - expectedGroupSize++; + expectedRemoteIndex++; } QCOMPARE(groups.size(), 6); @@ -320,19 +311,19 @@ void PlacesItemModelTest::testGroups() QCOMPARE(groups.at(0).first, 0); QCOMPARE(groups.at(0).second.toString(), QStringLiteral("Places")); - QCOMPARE(groups.at(1).first, expectedGroupSize); + QCOMPARE(groups.at(1).first, expectedRemoteIndex); QCOMPARE(groups.at(1).second.toString(), QStringLiteral("Remote")); - QCOMPARE(groups.at(2).first, expectedGroupSize + 2); + QCOMPARE(groups.at(2).first, expectedRemoteIndex + 2); QCOMPARE(groups.at(2).second.toString(), QStringLiteral("Recently Saved")); - QCOMPARE(groups.at(3).first, expectedGroupSize + 4); + QCOMPARE(groups.at(3).first, expectedRemoteIndex + 4); QCOMPARE(groups.at(3).second.toString(), QStringLiteral("Search For")); - QCOMPARE(groups.at(4).first, expectedGroupSize + 8); + QCOMPARE(groups.at(4).first, expectedRemoteIndex + 8); QCOMPARE(groups.at(4).second.toString(), QStringLiteral("Devices")); - QCOMPARE(groups.at(5).first, expectedGroupSize + 9); + QCOMPARE(groups.at(5).first, expectedRemoteIndex + 9); QCOMPARE(groups.at(5).second.toString(), QStringLiteral("Removable Devices")); } @@ -383,10 +374,13 @@ void PlacesItemModelTest::testDeletePlace() PlacesItemModel *model = new PlacesItemModel(); - int tempDirIndex = 3; + int tempDirIndex = 2; if (m_hasDesktopFolder) { tempDirIndex++; } + if (m_hasDocumentsFolder) { + tempDirIndex++; + } if (m_hasDownloadsFolder) { tempDirIndex++; } @@ -480,10 +474,20 @@ void PlacesItemModelTest::testDefaultViewProperties() QFETCH(bool, expectedPreviewShow); QFETCH(QList, expectedVisibleRole); + // In order to test the default view properties, turn off the global view properties and re-init the test to reload the model. + GeneralSettings* settings = GeneralSettings::self(); + settings->setGlobalViewProps(false); + settings->save(); + cleanup(); + init(); + ViewProperties properties(KFilePlacesModel::convertedUrl(url)); QCOMPARE(properties.viewMode(), expectedViewMode); QCOMPARE(properties.previewsShown(), expectedPreviewShow); QCOMPARE(properties.visibleRoles(), expectedVisibleRole); + + settings->setGlobalViewProps(true); + settings->save(); } void PlacesItemModelTest::testClear() @@ -546,10 +550,13 @@ void PlacesItemModelTest::testHideItem() void PlacesItemModelTest::testSystemItems() { - int tempDirIndex = 3; + int tempDirIndex = 2; if (m_hasDesktopFolder) { tempDirIndex++; } + if (m_hasDocumentsFolder) { + tempDirIndex++; + } if (m_hasDownloadsFolder) { tempDirIndex++; } @@ -594,10 +601,13 @@ void PlacesItemModelTest::testSystemItems() void PlacesItemModelTest::testEditBookmark() { - int tempDirIndex = 1; + int tempDirIndex = 2; if (m_hasDesktopFolder) { tempDirIndex++; } + if (m_hasDocumentsFolder) { + tempDirIndex++; + } if (m_hasDownloadsFolder) { tempDirIndex++; } @@ -607,7 +617,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 - schedulePlaceRemoval(tempDirIndex + 2); + schedulePlaceRemoval(tempDirIndex); QSignalSpy itemsChangedSply(m_model, &PlacesItemModel::itemsChanged); @@ -632,10 +642,13 @@ void PlacesItemModelTest::testEditBookmark() void PlacesItemModelTest::testEditAfterCreation() { - int tempDirIndex = 1; + int tempDirIndex = 2; if (m_hasDesktopFolder) { tempDirIndex++; } + if (m_hasDocumentsFolder) { + tempDirIndex++; + } if (m_hasDownloadsFolder) { tempDirIndex++; } @@ -651,7 +664,7 @@ void PlacesItemModelTest::testEditAfterCreation() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - schedulePlaceRemoval(tempDirIndex + 2); + schedulePlaceRemoval(tempDirIndex); // modify place text PlacesItem *item = m_model->placesItem(tempDirIndex); @@ -669,10 +682,13 @@ void PlacesItemModelTest::testEditAfterCreation() void PlacesItemModelTest::testEditMetadata() { - int tempDirIndex = 1; + int tempDirIndex = 2; if (m_hasDesktopFolder) { tempDirIndex++; } + if (m_hasDocumentsFolder) { + tempDirIndex++; + } if (m_hasDownloadsFolder) { tempDirIndex++; } @@ -689,7 +705,7 @@ void PlacesItemModelTest::testEditMetadata() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - schedulePlaceRemoval(tempDirIndex + 2); + schedulePlaceRemoval(tempDirIndex); // modify place metadata PlacesItem *item = m_model->placesItem(tempDirIndex); @@ -708,10 +724,13 @@ void PlacesItemModelTest::testEditMetadata() void PlacesItemModelTest::testRefresh() { - int tempDirIndex = 3; + int tempDirIndex = 2; if (m_hasDesktopFolder) { tempDirIndex++; } + if (m_hasDocumentsFolder) { + tempDirIndex++; + } if (m_hasDownloadsFolder) { tempDirIndex++; } @@ -743,7 +762,7 @@ void PlacesItemModelTest::testRefresh() m_model->refresh(); // item must be equal - QTRY_COMPARE_WITH_TIMEOUT(item->text(), sameItem->text(), TIMEOUT); + QTRY_COMPARE(item->text(), sameItem->text()); } void PlacesItemModelTest::testIcons_data() @@ -779,10 +798,13 @@ void PlacesItemModelTest::testIcons() void PlacesItemModelTest::testDragAndDrop() { - int lastIndex = 2; // last index of places group + int lastIndex = 1; // last index of places group if (m_hasDesktopFolder) { lastIndex++; } + if (m_hasDocumentsFolder) { + lastIndex++; + } if (m_hasDownloadsFolder) { lastIndex++; } @@ -790,6 +812,7 @@ void PlacesItemModelTest::testDragAndDrop() QList args; KItemRangeList range; QStringList urls = initialUrls(); + QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted); QSignalSpy itemsRemovedSpy(m_model, &PlacesItemModel::itemsRemoved); @@ -898,10 +921,13 @@ void PlacesItemModelTest::testDuplicatedEntries() void PlacesItemModelTest::renameAfterCreation() { - int tempDirIndex = 1; + int tempDirIndex = 2; if (m_hasDesktopFolder) { tempDirIndex++; } + if (m_hasDocumentsFolder) { + tempDirIndex++; + } if (m_hasDownloadsFolder) { tempDirIndex++; } @@ -915,10 +941,10 @@ void PlacesItemModelTest::renameAfterCreation() // create a new place createPlaceItem(QStringLiteral("Temporary Dir"), tempUrl, QString()); - urls.insert(tempDirIndex + 2, tempUrl.toLocalFile()); + urls.insert(tempDirIndex, tempUrl.toLocalFile()); // make sure that the new item will be removed later - schedulePlaceRemoval(tempDirIndex + 2); + schedulePlaceRemoval(tempDirIndex); CHECK_PLACES_URLS(urls); QCOMPARE(model->count(), m_model->count());