]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/tests/kfileitemmodeltest.cpp
Merge branch 'release/21.08'
[dolphin.git] / src / tests / kfileitemmodeltest.cpp
index 59ff63069b47eed1869b9ffbb77458e6ab4cd401..6a7c4cca6fa7e72c3fec68357c1eda186a60956d 100644 (file)
@@ -1,37 +1,26 @@
-/***************************************************************************
- *   Copyright (C) 2011 by Peter Penz <peter.penz19@gmail.com>             *
- *   Copyright (C) 2011 by Frank Reininghaus <frank78ac@googlemail.com>    *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
- ***************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
+ * SPDX-FileCopyrightText: 2011 Frank Reininghaus <frank78ac@googlemail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
+#include <QRandomGenerator>
 #include <QTest>
 #include <QSignalSpy>
+#include <QStandardPaths>
 #include <QTimer>
 #include <QMimeData>
 
+#include <KDirLister>
 #include <kio/job.h>
 
 #include "kitemviews/kfileitemmodel.h"
-#include "kitemviews/private/kfileitemmodeldirlister.h"
 #include "testdir.h"
 
 void myMessageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg)
 {
-    Q_UNUSED(context);
+    Q_UNUSED(context)
 
     switch (type) {
     case QtDebugMsg:
@@ -57,8 +46,9 @@ class KFileItemModelTest : public QObject
 {
     Q_OBJECT
 
-private slots:
+private Q_SLOTS:
     void init();
+    void initTestCase();
     void cleanup();
 
     void testDefaultRoles();
@@ -105,6 +95,11 @@ private:
     TestDir* m_testDir;
 };
 
+void KFileItemModelTest::initTestCase()
+{
+    QStandardPaths::setTestModeEnabled(true);
+}
+
 void KFileItemModelTest::init()
 {
     // The item-model tests result in a huge number of debugging
@@ -126,24 +121,25 @@ void KFileItemModelTest::init()
 void KFileItemModelTest::cleanup()
 {
     delete m_model;
-    m_model = 0;
+    m_model = nullptr;
 
     delete m_testDir;
-    m_testDir = 0;
+    m_testDir = nullptr;
 }
 
 void KFileItemModelTest::testDefaultRoles()
 {
     const QSet<QByteArray> roles = m_model->roles();
-    QCOMPARE(roles.count(), 3);
+    QCOMPARE(roles.count(), 4);
     QVERIFY(roles.contains("text"));
     QVERIFY(roles.contains("isDir"));
     QVERIFY(roles.contains("isLink"));
+    QVERIFY(roles.contains("isHidden"));
 }
 
 void KFileItemModelTest::testDefaultSortRole()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
     QVERIFY(itemsInsertedSpy.isValid());
 
     QCOMPARE(m_model->sortRole(), QByteArray("text"));
@@ -166,7 +162,7 @@ void KFileItemModelTest::testDefaultGroupedSorting()
 
 void KFileItemModelTest::testNewItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     m_testDir->createFiles({"a.txt", "b.txt", "c.txt"});
 
@@ -180,8 +176,8 @@ void KFileItemModelTest::testNewItems()
 
 void KFileItemModelTest::testRemoveItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsRemovedSpy(m_model, SIGNAL(itemsRemoved(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsRemovedSpy(m_model, &KFileItemModel::itemsRemoved);
 
     m_testDir->createFiles({"a.txt", "b.txt"});
     m_model->loadDirectory(m_testDir->url());
@@ -198,9 +194,9 @@ void KFileItemModelTest::testRemoveItems()
 
 void KFileItemModelTest::testDirLoadingCompleted()
 {
-    QSignalSpy loadingCompletedSpy(m_model, SIGNAL(directoryLoadingCompleted()));
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsRemovedSpy(m_model, SIGNAL(itemsRemoved(KItemRangeList)));
+    QSignalSpy loadingCompletedSpy(m_model, &KFileItemModel::directoryLoadingCompleted);
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsRemovedSpy(m_model, &KFileItemModel::itemsRemoved);
 
     m_testDir->createFiles({"a.txt", "b.txt", "c.txt"});
 
@@ -241,9 +237,9 @@ void KFileItemModelTest::testDirLoadingCompleted()
 
 void KFileItemModelTest::testSetData()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
     QVERIFY(itemsInsertedSpy.isValid());
-    QSignalSpy itemsChangedSpy(m_model, SIGNAL(itemsChanged(KItemRangeList, QSet<QByteArray>)));
+    QSignalSpy itemsChangedSpy(m_model, &KFileItemModel::itemsChanged);
     QVERIFY(itemsChangedSpy.isValid());
 
     m_testDir->createFile("a.txt");
@@ -296,9 +292,9 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
     QFETCH(int, ratingIndex1);
     QFETCH(int, ratingIndex2);
 
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
     QVERIFY(itemsInsertedSpy.isValid());
-    QSignalSpy itemsMovedSpy(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)));
+    QSignalSpy itemsMovedSpy(m_model, &KFileItemModel::itemsMoved);
     QVERIFY(itemsMovedSpy.isValid());
 
     // Changing the value of a sort-role must result in
@@ -351,8 +347,8 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
 
 void KFileItemModelTest::testChangeSortRole()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsMovedSpy(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsMovedSpy(m_model, &KFileItemModel::itemsMoved);
     QVERIFY(itemsMovedSpy.isValid());
 
     QCOMPARE(m_model->sortRole(), QByteArray("text"));
@@ -391,8 +387,8 @@ void KFileItemModelTest::testChangeSortRole()
 
 void KFileItemModelTest::testResortAfterChangingName()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsMovedSpy(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsMovedSpy(m_model, &KFileItemModel::itemsMoved);
     QVERIFY(itemsMovedSpy.isValid());
 
     // We sort by size in a directory where all files have the same size.
@@ -429,7 +425,7 @@ void KFileItemModelTest::testResortAfterChangingName()
 
 void KFileItemModelTest::testModelConsistencyWhenInsertingItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     // KFileItemModel prevents that inserting a punch of items sequentially
     // results in an itemsInserted()-signal for each item. Instead internally
@@ -449,9 +445,9 @@ void KFileItemModelTest::testModelConsistencyWhenInsertingItems()
         itemsInsertedSpy.clear();
 
         for (int j = 0; j < 10; ++j) {
-            int itemName = qrand();
+            int itemName = QRandomGenerator::global()->generate();
             while (insertedItems.contains(itemName)) {
-                itemName = qrand();
+                itemName = QRandomGenerator::global()->generate();
             }
             insertedItems.insert(itemName);
 
@@ -459,7 +455,7 @@ void KFileItemModelTest::testModelConsistencyWhenInsertingItems()
         }
 
         m_model->m_dirLister->updateDirectory(m_testDir->url());
-        if (itemsInsertedSpy.count() == 0) {
+        if (itemsInsertedSpy.isEmpty()) {
             QVERIFY(itemsInsertedSpy.wait());
         }
 
@@ -471,7 +467,7 @@ void KFileItemModelTest::testModelConsistencyWhenInsertingItems()
 
 void KFileItemModelTest::testItemRangeConsistencyWhenInsertingItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     m_testDir->createFiles({"B", "E", "G"});
 
@@ -510,11 +506,11 @@ void KFileItemModelTest::testItemRangeConsistencyWhenInsertingItems()
 
 void KFileItemModelTest::testExpandItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
     QVERIFY(itemsInsertedSpy.isValid());
-    QSignalSpy itemsRemovedSpy(m_model, SIGNAL(itemsRemoved(KItemRangeList)));
+    QSignalSpy itemsRemovedSpy(m_model, &KFileItemModel::itemsRemoved);
     QVERIFY(itemsRemovedSpy.isValid());
-    QSignalSpy loadingCompletedSpy(m_model, SIGNAL(directoryLoadingCompleted()));
+    QSignalSpy loadingCompletedSpy(m_model, &KFileItemModel::directoryLoadingCompleted);
     QVERIFY(loadingCompletedSpy.isValid());
 
     // Test expanding subfolders in a folder with the items "a/", "a/a/", "a/a/1", "a/a-1/", "a/a-1/1".
@@ -647,8 +643,8 @@ void KFileItemModelTest::testExpandItems()
 
 void KFileItemModelTest::testExpandParentItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy loadingCompletedSpy(m_model, SIGNAL(directoryLoadingCompleted()));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy loadingCompletedSpy(m_model, &KFileItemModel::directoryLoadingCompleted);
     QVERIFY(loadingCompletedSpy.isValid());
 
     // Create a tree structure of folders:
@@ -728,8 +724,8 @@ void KFileItemModelTest::testExpandParentItems()
  */
 void KFileItemModelTest::testMakeExpandedItemHidden()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsRemovedSpy(m_model, SIGNAL(itemsRemoved(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsRemovedSpy(m_model, &KFileItemModel::itemsRemoved);
 
     QSet<QByteArray> modelRoles = m_model->roles();
     modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
@@ -771,7 +767,7 @@ void KFileItemModelTest::testMakeExpandedItemHidden()
 
 void KFileItemModelTest::testRemoveFilteredExpandedItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     QSet<QByteArray> originalModelRoles = m_model->roles();
     QSet<QByteArray> modelRoles = originalModelRoles;
@@ -816,8 +812,21 @@ void KFileItemModelTest::testRemoveFilteredExpandedItems()
 
 void KFileItemModelTest::testSorting()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsMovedSpy(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)));
+    // testDir structure is as follows
+    // ./
+    // ├─ .g/
+    // ├─ a
+    // ├─ b
+    // ├─ c/
+    // │  ├─ c-2/
+    // │  │  ├─ c-3
+    // │  ├─ c-1
+    // ├─ .f
+    // ├─ d
+    // ├─ e
+
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsMovedSpy(m_model, &KFileItemModel::itemsMoved);
     QVERIFY(itemsMovedSpy.isValid());
 
     // Create some files with different sizes and modification times to check the different sorting options
@@ -840,17 +849,27 @@ void KFileItemModelTest::testSorting()
     m_testDir->createFile("d", "The largest file in this directory", now.addDays(-1));
     m_testDir->createFile("e", "An even larger file", now.addDays(-4));
     m_testDir->createFile(".f");
+    m_testDir->createDir(".g");
 
     m_model->loadDirectory(m_testDir->url());
     QVERIFY(itemsInsertedSpy.wait());
+    QCOMPARE(itemsInsertedSpy.count(), 1);
+    KItemRangeList itemRangeList = itemsInsertedSpy.takeFirst().at(0).value<KItemRangeList>();
+    QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(0, 5));
 
     int index = m_model->index(QUrl(m_testDir->url().url() + "/c"));
     m_model->setExpanded(index, true);
     QVERIFY(itemsInsertedSpy.wait());
+    QCOMPARE(itemsInsertedSpy.count(), 1);
+    itemRangeList = itemsInsertedSpy.takeFirst().at(0).value<KItemRangeList>();
+    QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(1, 2));
 
     index = m_model->index(QUrl(m_testDir->url().url() + "/c/c-2"));
     m_model->setExpanded(index, true);
     QVERIFY(itemsInsertedSpy.wait());
+    QCOMPARE(itemsInsertedSpy.count(), 1);
+    itemRangeList = itemsInsertedSpy.takeFirst().at(0).value<KItemRangeList>();
+    QCOMPARE(itemRangeList, KItemRangeList() << KItemRange(2, 1));
 
     // Default: Sort by Name, ascending
     QCOMPARE(m_model->sortRole(), QByteArray("text"));
@@ -946,12 +965,51 @@ void KFileItemModelTest::testSorting()
     QCOMPARE(itemsMovedSpy.first().at(0).value<KItemRange>(), KItemRange(4, 4));
     QCOMPARE(itemsMovedSpy.takeFirst().at(1).value<QList<int> >(), QList<int>() << 7 << 6 << 5 << 4);
 
-    // TODO: Sort by other roles; show/hide hidden files
+    // 'Show Hidden Files' enabled
+    m_model->setShowHiddenFiles(true);
+    QVERIFY(m_model->showHiddenFiles());
+    QVERIFY(!m_model->sortHiddenLast());
+    QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << ".g" << "d" << "e" << "b" << "a" << ".f");
+    QCOMPARE(itemsMovedSpy.count(), 0);
+    QCOMPARE(itemsInsertedSpy.count(), 1);
+    QCOMPARE(itemsInsertedSpy.takeFirst().at(0).value<KItemRangeList>(), KItemRangeList() << KItemRange(4, 1) << KItemRange(8, 1));
+
+    // 'Sort Hidden Files Last' enabled
+    m_model->setSortHiddenLast(true);
+    QVERIFY(m_model->sortHiddenLast());
+    QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "d" << "e" << "b" << "a" << ".g" << ".f");
+    QCOMPARE(itemsMovedSpy.count(), 1);
+    QCOMPARE(itemsInsertedSpy.count(), 0);
+    QCOMPARE(itemsMovedSpy.first().at(0).value<KItemRange>(), KItemRange(4, 5));
+    QCOMPARE(itemsMovedSpy.takeFirst().at(1).value<QList<int> >(), QList<int>() << 8 << 4 << 5 << 6 << 7);
+
+    // Sort by Name
+    m_model->setSortRole("text");
+    QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "e" << "d" << "b" << "a" << ".g" << ".f");
+    QCOMPARE(itemsMovedSpy.count(), 1);
+    QCOMPARE(itemsMovedSpy.first().at(0).value<KItemRange>(), KItemRange(4, 2));
+    QCOMPARE(itemsMovedSpy.takeFirst().at(1).value<QList<int> >(), QList<int>() << 5 << 4);
+
+    // Sort ascending
+    m_model->setSortOrder(Qt::AscendingOrder);
+    QCOMPARE(itemsInModel(), QStringList() << "c" << "c-2" << "c-3" << "c-1" << "a" << "b" << "d" << "e" << ".g" << ".f");
+    QCOMPARE(itemsMovedSpy.count(), 1);
+    QCOMPARE(itemsMovedSpy.first().at(0).value<KItemRange>(), KItemRange(4, 4));
+    QCOMPARE(itemsMovedSpy.takeFirst().at(1).value<QList<int> >(), QList<int>() << 7 << 6 << 5 << 4);
+
+    // 'Sort Folders First' disabled
+    m_model->setSortDirectoriesFirst(false);
+    QVERIFY(!m_model->sortDirectoriesFirst());
+    QCOMPARE(itemsInModel(), QStringList() << "a" << "b" << "c" << "c-1" << "c-2" << "c-3" << "d" << "e" << ".f" << ".g");
+    QCOMPARE(itemsMovedSpy.count(), 1);
+    QCOMPARE(itemsMovedSpy.first().at(0).value<KItemRange>(), KItemRange(0, 10));
+    QCOMPARE(itemsMovedSpy.takeFirst().at(1).value<QList<int> >(), QList<int>() << 2 << 4 << 5 << 3 << 0 << 1 << 6 << 7 << 9 << 8);
+
 }
 
 void KFileItemModelTest::testIndexForKeyboardSearch()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     m_testDir->createFiles({"a", "aa", "Image.jpg", "Image.png", "Text", "Text1", "Text2", "Text11"});
 
@@ -1001,7 +1059,7 @@ void KFileItemModelTest::testIndexForKeyboardSearch()
 
 void KFileItemModelTest::testNameFilter()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     m_testDir->createFiles({"A1", "A2", "Abc", "Bcd", "Cde"});
 
@@ -1058,8 +1116,8 @@ void KFileItemModelTest::testEmptyPath()
  */
 void KFileItemModelTest::testRefreshExpandedItem()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsChangedSpy(m_model, SIGNAL(itemsChanged(KItemRangeList, QSet<QByteArray>)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsChangedSpy(m_model, &KFileItemModel::itemsChanged);
     QVERIFY(itemsChangedSpy.isValid());
 
     QSet<QByteArray> modelRoles = m_model->roles();
@@ -1097,8 +1155,8 @@ void KFileItemModelTest::testRemoveHiddenItems()
     m_testDir->createDir("d");
     m_testDir->createFiles({".f", ".g", "h", "i"});
 
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsRemovedSpy(m_model, SIGNAL(itemsRemoved(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsRemovedSpy(m_model, &KFileItemModel::itemsRemoved);
 
     m_model->setShowHiddenFiles(true);
     m_model->loadDirectory(m_testDir->url());
@@ -1140,8 +1198,8 @@ void KFileItemModelTest::testRemoveHiddenItems()
  */
 void KFileItemModelTest::collapseParentOfHiddenItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsRemovedSpy(m_model, SIGNAL(itemsRemoved(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsRemovedSpy(m_model, &KFileItemModel::itemsRemoved);
 
     QSet<QByteArray> modelRoles = m_model->roles();
     modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
@@ -1190,8 +1248,8 @@ void KFileItemModelTest::collapseParentOfHiddenItems()
  */
 void KFileItemModelTest::removeParentOfHiddenItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsRemovedSpy(m_model, SIGNAL(itemsRemoved(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsRemovedSpy(m_model, &KFileItemModel::itemsRemoved);
 
     QSet<QByteArray> modelRoles = m_model->roles();
     modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
@@ -1243,8 +1301,8 @@ void KFileItemModelTest::removeParentOfHiddenItems()
  */
 void KFileItemModelTest::testGeneralParentChildRelationships()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsRemovedSpy(m_model, SIGNAL(itemsRemoved(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsRemovedSpy(m_model, &KFileItemModel::itemsRemoved);
 
     QSet<QByteArray> modelRoles = m_model->roles();
     modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
@@ -1330,10 +1388,10 @@ void KFileItemModelTest::testGeneralParentChildRelationships()
 
 void KFileItemModelTest::testNameRoleGroups()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
-    QSignalSpy itemsMovedSpy(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+    QSignalSpy itemsMovedSpy(m_model, &KFileItemModel::itemsMoved);
     QVERIFY(itemsMovedSpy.isValid());
-    QSignalSpy groupsChangedSpy(m_model, SIGNAL(groupsChanged()));
+    QSignalSpy groupsChangedSpy(m_model, &KFileItemModel::groupsChanged);
     QVERIFY(groupsChangedSpy.isValid());
 
     m_testDir->createFiles({"b.txt", "c.txt", "d.txt", "e.txt"});
@@ -1398,7 +1456,7 @@ void KFileItemModelTest::testNameRoleGroups()
 
 void KFileItemModelTest::testNameRoleGroupsWithExpandedItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     QSet<QByteArray> modelRoles = m_model->roles();
     modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
@@ -1436,7 +1494,7 @@ void KFileItemModelTest::testNameRoleGroupsWithExpandedItems()
 
 void KFileItemModelTest::testInconsistentModel()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     QSet<QByteArray> modelRoles = m_model->roles();
     modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
@@ -1492,7 +1550,7 @@ void KFileItemModelTest::testInconsistentModel()
 
 void KFileItemModelTest::testChangeRolesForFilteredItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     QSet<QByteArray> modelRoles = m_model->roles();
     modelRoles << "owner";
@@ -1550,25 +1608,26 @@ void KFileItemModelTest::testChangeSortRoleWhileFiltering()
 {
     KFileItemList items;
 
-    KIO::UDSEntry entry;
-    entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, 0100000);    // S_IFREG might not be defined on non-Unix platforms.
-    entry.insert(KIO::UDSEntry::UDS_ACCESS, 07777);
-    entry.insert(KIO::UDSEntry::UDS_SIZE, 0);
-    entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, 0);
-    entry.insert(KIO::UDSEntry::UDS_GROUP, "group");
-    entry.insert(KIO::UDSEntry::UDS_ACCESS_TIME, 0);
+    KIO::UDSEntry entry[3];
 
-    entry.insert(KIO::UDSEntry::UDS_NAME, "a.txt");
-    entry.insert(KIO::UDSEntry::UDS_USER, "user-b");
-    items.append(KFileItem(entry, m_testDir->url(), false, true));
+    entry[0].fastInsert(KIO::UDSEntry::UDS_NAME, "a.txt");
+    entry[0].fastInsert(KIO::UDSEntry::UDS_USER, "user-b");
 
-    entry.insert(KIO::UDSEntry::UDS_NAME, "b.txt");
-    entry.insert(KIO::UDSEntry::UDS_USER, "user-c");
-    items.append(KFileItem(entry, m_testDir->url(), false, true));
+    entry[1].fastInsert(KIO::UDSEntry::UDS_NAME, "b.txt");
+    entry[1].fastInsert(KIO::UDSEntry::UDS_USER, "user-c");
 
-    entry.insert(KIO::UDSEntry::UDS_NAME, "c.txt");
-    entry.insert(KIO::UDSEntry::UDS_USER, "user-a");
-    items.append(KFileItem(entry, m_testDir->url(), false, true));
+    entry[2].fastInsert(KIO::UDSEntry::UDS_NAME, "c.txt");
+    entry[2].fastInsert(KIO::UDSEntry::UDS_USER, "user-a");
+
+    for (int i = 0; i < 3; ++i) {
+        entry[i].fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, 0100000);    // S_IFREG might not be defined on non-Unix platforms.
+        entry[i].fastInsert(KIO::UDSEntry::UDS_ACCESS, 07777);
+        entry[i].fastInsert(KIO::UDSEntry::UDS_SIZE, 0);
+        entry[i].fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME, 0);
+        entry[i].fastInsert(KIO::UDSEntry::UDS_GROUP, "group");
+        entry[i].fastInsert(KIO::UDSEntry::UDS_ACCESS_TIME, 0);
+        items.append(KFileItem(entry[i], m_testDir->url(), false, true));
+    }
 
     m_model->slotItemsAdded(m_testDir->url(), items);
     m_model->slotCompleted();
@@ -1589,7 +1648,7 @@ void KFileItemModelTest::testChangeSortRoleWhileFiltering()
 
 void KFileItemModelTest::testRefreshFilteredItems()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     m_testDir->createFiles({"a.txt", "b.txt", "c.jpg", "d.jpg"});
 
@@ -1618,7 +1677,7 @@ void KFileItemModelTest::testRefreshFilteredItems()
 
 void KFileItemModelTest::testCreateMimeData()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     QSet<QByteArray> modelRoles = m_model->roles();
     modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
@@ -1645,7 +1704,7 @@ void KFileItemModelTest::testCreateMimeData()
 
 void KFileItemModelTest::testCollapseFolderWhileLoading()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     QSet<QByteArray> modelRoles = m_model->roles();
     modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
@@ -1723,7 +1782,7 @@ void KFileItemModelTest::testCollapseFolderWhileLoading()
 
 void KFileItemModelTest::testDeleteFileMoreThanOnce()
 {
-    QSignalSpy itemsInsertedSpy(m_model, SIGNAL(itemsInserted(KItemRangeList)));
+    QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
 
     m_testDir->createFiles({"a.txt", "b.txt", "c.txt", "d.txt"});