]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/tests/placesitemmodeltest.cpp
[PlacesItemModelTest] Fix testGroups() test case
[dolphin.git] / src / tests / placesitemmodeltest.cpp
index fc21ce055f9c0d46c0ae59e4a088f6ab489b6aea..8415a58d0a1df1b9cf65acb386956a53993758d6 100644 (file)
@@ -85,6 +85,9 @@ private:
     PlacesItemModel* m_model;
     QSet<int> m_tobeRemoved;
     QMap<QString, QDBusInterface *> m_interfacesMap;
+    int m_expectedModelCount = 15;
+    bool m_hasDesktopFolder = false;
+    bool m_hasDownloadsFolder = false;
 
     void setBalooEnabled(bool enabled);
     int indexOf(const QUrl &url);
@@ -161,11 +164,22 @@ QStringList PlacesItemModelTest::initialUrls() const
 {
     static QStringList urls;
     if (urls.isEmpty()) {
-        urls << QDir::homePath() << 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("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;
@@ -223,7 +237,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()
@@ -257,6 +271,16 @@ void PlacesItemModelTest::initTestCase()
         QVERIFY(QFile::remove(bookmarsFileName));
     }
 
+    if (QDir(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)).exists()) {
+        m_hasDesktopFolder = true;
+        m_expectedModelCount++;
+    }
+
+    if (QDir(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)).exists()) {
+        m_hasDownloadsFolder = true;
+        m_expectedModelCount++;
+    }
+
     qRegisterMetaType<KItemRangeList>();
     qRegisterMetaType<KItemRange>();
 }
@@ -278,25 +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, 3);
+    QCOMPARE(groups.at(1).first, expectedGroupSize);
     QCOMPARE(groups.at(1).second.toString(), QStringLiteral("Remote"));
 
-    QCOMPARE(groups.at(2).first, 4);
+    QCOMPARE(groups.at(2).first, expectedGroupSize + 2);
     QCOMPARE(groups.at(2).second.toString(), QStringLiteral("Recently Saved"));
 
-    QCOMPARE(groups.at(3).first, 8);
+    QCOMPARE(groups.at(3).first, expectedGroupSize + 4);
     QCOMPARE(groups.at(3).second.toString(), QStringLiteral("Search For"));
 
-    QCOMPARE(groups.at(4).first, 12);
+    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"));
 }
 
@@ -315,7 +346,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;
@@ -349,7 +380,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);
@@ -357,11 +388,11 @@ 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);
-    QTRY_COMPARE(m_model->count(), 17);
+    QTRY_COMPARE(m_model->count(), m_expectedModelCount);
     CHECK_PLACES_URLS(initialUrls());
     QTRY_COMPARE(model->count(), m_model->count());
 }
@@ -378,7 +409,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");
@@ -394,7 +425,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);
 
@@ -422,7 +453,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"});
@@ -444,12 +475,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()
@@ -497,12 +528,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());
     }
@@ -516,28 +547,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);
+    QTRY_COMPARE(m_model->count(), m_expectedModelCount);
 
     //cancel removal (it was removed above)
-    cancelPlaceRemoval(3);
+    cancelPlaceRemoval(5);
 }
 
 void PlacesItemModelTest::testEditBookmark()
@@ -547,7 +578,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);
 
@@ -583,7 +614,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);
@@ -613,7 +644,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);
@@ -643,10 +674,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
@@ -674,7 +705,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");
@@ -702,10 +733,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);
@@ -716,24 +747,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);
@@ -744,14 +775,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);
 }
@@ -815,10 +846,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());