]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/tests/placesitemmodeltest.cpp
Merge branch 'Applications/19.04'
[dolphin.git] / src / tests / placesitemmodeltest.cpp
index e045e9198f1913eae8b942bac830a1e3e7440881..4ed4945b2010e3bcdef5ced73623ff81364769c7 100644 (file)
@@ -29,6 +29,7 @@
 #include <KAboutData>
 #include <KFilePlacesModel>
 
+#include "dolphin_generalsettings.h"
 #include "panels/places/placesitemmodel.h"
 #include "panels/places/placesitem.h"
 #include "views/viewproperties.h"
@@ -96,7 +97,7 @@ private:
     QStringList placesUrls(PlacesItemModel *model = nullptr) const;
     QStringList initialUrls() const;
     void createPlaceItem(const QString &text, const QUrl &url, const QString &icon);
-    void removePlaceAfter(int index);
+    void schedulePlaceRemoval(int index);
     void cancelPlaceRemoval(int index);
     void removeTestUserData();
     QMimeData *createMimeData(const QList<int> &indexes) const;
@@ -190,7 +191,7 @@ void PlacesItemModelTest::createPlaceItem(const QString &text, const QUrl &url,
     m_model->createPlacesItem(text, url, icon);
 }
 
-void PlacesItemModelTest::removePlaceAfter(int index)
+void PlacesItemModelTest::schedulePlaceRemoval(int index)
 {
     m_tobeRemoved.insert(index);
 }
@@ -235,7 +236,7 @@ QMimeData *PlacesItemModelTest::createMimeData(const QList<int> &indexes) const
 void PlacesItemModelTest::init()
 {
     m_model = new PlacesItemModel();
-    // WORKAROUND: need to wait for bookmark to load, check: PlacesItemModel::updateBookmarks
+    // WORKAROUND: need to wait for bookmark to load
     QTest::qWait(300);
     QCOMPARE(m_model->count(), m_expectedModelCount);
 }
@@ -475,10 +476,20 @@ void PlacesItemModelTest::testDefaultViewProperties()
     QFETCH(bool, expectedPreviewShow);
     QFETCH(QList<QByteArray>, 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()
@@ -541,6 +552,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,62 +574,78 @@ void PlacesItemModelTest::testSystemItems()
     QTRY_COMPARE(itemsInsertedSpy.count(), 1);
 
     // make sure the new place get removed
-    removePlaceAfter(5);
+    schedulePlaceRemoval(tempDirIndex);
 
     QList<QVariant> args = itemsInsertedSpy.takeFirst();
     KItemRangeList range = args.at(0).value<KItemRangeList>();
-    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<KItemRangeList>();
-    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()
 {
+    int tempDirIndex = 1;
+    if (m_hasDesktopFolder) {
+        tempDirIndex++;
+    }
+    if (m_hasDownloadsFolder) {
+        tempDirIndex++;
+    }
+
     QScopedPointer<PlacesItemModel> 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);
+    schedulePlaceRemoval(tempDirIndex + 2);
 
     QSignalSpy itemsChangedSply(m_model, &PlacesItemModel::itemsChanged);
 
     // modify place text
-    m_model->item(3)->setText(QStringLiteral("Renamed place"));
+    m_model->item(tempDirIndex)->setText(QStringLiteral("Renamed place"));
     m_model->refresh();
 
     // check if the correct signal was fired
     QTRY_COMPARE(itemsChangedSply.count(), 1);
     QList<QVariant> args = itemsChangedSply.takeFirst();
     KItemRangeList range = args.at(0).value<KItemRangeList>();
-    QCOMPARE(range.first().index, 3);
+    QCOMPARE(range.first().index, tempDirIndex);
     QCOMPARE(range.first().count, 1);
     QSet<QByteArray> roles = args.at(1).value<QSet<QByteArray> >();
     QCOMPARE(roles.size(), 1);
     QCOMPARE(*roles.begin(), QByteArrayLiteral("text"));
-    QCOMPARE(m_model->item(3)->text(), QStringLiteral("Renamed place"));
+    QCOMPARE(m_model->item(tempDirIndex)->text(), QStringLiteral("Renamed place"));
 
     // check if the item was updated in the other model
-    QTRY_COMPARE(other->item(3)->text(), QStringLiteral("Renamed place"));
+    QTRY_COMPARE(other->item(tempDirIndex)->text(), QStringLiteral("Renamed place"));
 }
 
 void PlacesItemModelTest::testEditAfterCreation()
 {
+    int tempDirIndex = 1;
+    if (m_hasDesktopFolder) {
+        tempDirIndex++;
+    }
+    if (m_hasDownloadsFolder) {
+        tempDirIndex++;
+    }
+
     const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
     QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted);
 
@@ -622,24 +657,32 @@ void PlacesItemModelTest::testEditAfterCreation()
     QTRY_COMPARE(model->count(), m_model->count());
 
     // make sure that the new item will be removed later
-    removePlaceAfter(5);
+    schedulePlaceRemoval(tempDirIndex + 2);
 
     // modify place text
-    PlacesItem *item = m_model->placesItem(3);
+    PlacesItem *item = m_model->placesItem(tempDirIndex);
     item->setText(QStringLiteral("Renamed place"));
     m_model->refresh();
 
     // check if the second model got the changes
     QTRY_COMPARE(model->count(), m_model->count());
-    QTRY_COMPARE(model->placesItem(3)->text(), m_model->placesItem(3)->text());
-    QTRY_COMPARE(model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")),
-                 m_model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")));
-    QTRY_COMPARE(model->placesItem(3)->icon(), m_model->placesItem(3)->icon());
-    QTRY_COMPARE(model->placesItem(3)->url(), m_model->placesItem(3)->url());
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->text(), m_model->placesItem(tempDirIndex)->text());
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")),
+                 m_model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")));
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->icon(), m_model->placesItem(tempDirIndex)->icon());
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->url(), m_model->placesItem(tempDirIndex)->url());
 }
 
 void PlacesItemModelTest::testEditMetadata()
 {
+    int tempDirIndex = 1;
+    if (m_hasDesktopFolder) {
+        tempDirIndex++;
+    }
+    if (m_hasDownloadsFolder) {
+        tempDirIndex++;
+    }
+
     const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
     QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted);
 
@@ -652,25 +695,33 @@ void PlacesItemModelTest::testEditMetadata()
     QTRY_COMPARE(model->count(), m_model->count());
 
     // make sure that the new item will be removed later
-    removePlaceAfter(5);
+    schedulePlaceRemoval(tempDirIndex + 2);
 
     // modify place metadata
-    PlacesItem *item = m_model->placesItem(3);
+    PlacesItem *item = m_model->placesItem(tempDirIndex);
     item->bookmark().setMetaDataItem(QStringLiteral("OnlyInApp"), KAboutData::applicationData().componentName());
     m_model->refresh();
 
     // check if the place was modified in both models
-    QTRY_COMPARE(model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")),
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")),
                  KAboutData::applicationData().componentName());
-    QTRY_COMPARE(model->placesItem(3)->text(), m_model->placesItem(3)->text());
-    QTRY_COMPARE(model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")),
-                 m_model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")));
-    QTRY_COMPARE(model->placesItem(3)->icon(), m_model->placesItem(3)->icon());
-    QTRY_COMPARE(model->placesItem(3)->url(), m_model->placesItem(3)->url());
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->text(), m_model->placesItem(tempDirIndex)->text());
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")),
+                 m_model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")));
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->icon(), m_model->placesItem(tempDirIndex)->icon());
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->url(), m_model->placesItem(tempDirIndex)->url());
 }
 
 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);
 
@@ -682,10 +733,10 @@ void PlacesItemModelTest::testRefresh()
     QTRY_COMPARE(model->count(), m_model->count());
 
     // make sure that the new item will be removed later
-    removePlaceAfter(5);
+    schedulePlaceRemoval(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
@@ -734,6 +785,14 @@ void PlacesItemModelTest::testIcons()
 
 void PlacesItemModelTest::testDragAndDrop()
 {
+    int lastIndex = 2; // last index of places group
+    if (m_hasDesktopFolder) {
+        lastIndex++;
+    }
+    if (m_hasDownloadsFolder) {
+        lastIndex++;
+    }
+
     QList<QVariant> args;
     KItemRangeList range;
     QStringList urls = initialUrls();
@@ -744,7 +803,7 @@ void PlacesItemModelTest::testDragAndDrop()
     // 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(0, 4);
+    urls.move(0, lastIndex);
     delete dropData;
 
     QTRY_COMPARE(itemsInsertedSpy.count(), 1);
@@ -762,7 +821,7 @@ void PlacesItemModelTest::testDragAndDrop()
     range = args.at(0).value<KItemRangeList>();
     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);
 
@@ -770,9 +829,9 @@ void PlacesItemModelTest::testDragAndDrop()
     itemsRemovedSpy.clear();
 
     // Move home directory item back to its original position
-    dropData = createMimeData(QList<int>() << 4);
+    dropData = createMimeData(QList<int>() << lastIndex);
     m_model->dropMimeDataBefore(0, dropData);
-    urls.move(4, 0);
+    urls.move(lastIndex, 0);
     delete dropData;
 
     QTRY_COMPARE(itemsInsertedSpy.count(), 1);
@@ -783,7 +842,7 @@ void PlacesItemModelTest::testDragAndDrop()
     range = args.at(0).value<KItemRangeList>();
     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();
@@ -845,6 +904,14 @@ void PlacesItemModelTest::testDuplicatedEntries()
 
 void PlacesItemModelTest::renameAfterCreation()
 {
+    int tempDirIndex = 1;
+    if (m_hasDesktopFolder) {
+        tempDirIndex++;
+    }
+    if (m_hasDownloadsFolder) {
+        tempDirIndex++;
+    }
+
     const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
     QStringList urls = initialUrls();
     PlacesItemModel *model = new PlacesItemModel();
@@ -854,10 +921,10 @@ void PlacesItemModelTest::renameAfterCreation()
 
     // create a new place
     createPlaceItem(QStringLiteral("Temporary Dir"), tempUrl, QString());
-    urls.insert(5, tempUrl.toLocalFile());
+    urls.insert(tempDirIndex + 2, tempUrl.toLocalFile());
 
     // make sure that the new item will be removed later
-    removePlaceAfter(5);
+    schedulePlaceRemoval(tempDirIndex + 2);
 
     CHECK_PLACES_URLS(urls);
     QCOMPARE(model->count(), m_model->count());
@@ -866,7 +933,7 @@ void PlacesItemModelTest::renameAfterCreation()
     // modify place text
     QSignalSpy changedSpy(m_model, &PlacesItemModel::itemsChanged);
 
-    PlacesItem *item = m_model->placesItem(3);
+    PlacesItem *item = m_model->placesItem(tempDirIndex);
     item->setText(QStringLiteral("New Temporary Dir"));
     item->setUrl(item->url());
     item->setIcon(item->icon());
@@ -875,8 +942,8 @@ void PlacesItemModelTest::renameAfterCreation()
     QTRY_COMPARE(changedSpy.count(), 1);
 
     // check if the place was modified in both models
-    QTRY_COMPARE(m_model->placesItem(3)->text(), QStringLiteral("New Temporary Dir"));
-    QTRY_COMPARE(model->placesItem(3)->text(), QStringLiteral("New Temporary Dir"));
+    QTRY_COMPARE(m_model->placesItem(tempDirIndex)->text(), QStringLiteral("New Temporary Dir"));
+    QTRY_COMPARE(model->placesItem(tempDirIndex)->text(), QStringLiteral("New Temporary Dir"));
 }
 
 QTEST_MAIN(PlacesItemModelTest)