┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tests/kfileitemmodeltest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/kfileitemmodeltest.cpp')
-rw-r--r--src/tests/kfileitemmodeltest.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp
index eb8e3b4c5..bd4a60c09 100644
--- a/src/tests/kfileitemmodeltest.cpp
+++ b/src/tests/kfileitemmodeltest.cpp
@@ -84,6 +84,10 @@ private Q_SLOTS:
void testGeneralParentChildRelationships();
void testNameRoleGroups();
void testNameRoleGroupsWithExpandedItems();
+ void testGroupRoleFallsBackToSortRole();
+ void testGroupRoleIndependentFromSortRole();
+ void testGroupRoleNotResetBySortRoleChange();
+ void testGroupRoleChangedSignal();
void testInconsistentModel();
void testChangeRolesForFilteredItems();
void testChangeSortRoleWhileFiltering();
@@ -2879,6 +2883,84 @@ QUrl KFileItemModelTest::subDir(QUrl parent, const QString &relativePath)
return parent.resolved(QUrl(relativePath));
}
+void KFileItemModelTest::testGroupRoleFallsBackToSortRole()
+{
+ QCOMPARE(m_model->rawGroupRole(), QByteArray());
+ QCOMPARE(m_model->groupRole(), m_model->sortRole());
+
+ m_model->setSortRole("size");
+ QCOMPARE(m_model->groupRole(), QByteArray("size"));
+ QCOMPARE(m_model->rawGroupRole(), QByteArray());
+
+ m_model->setGroupRole("text");
+ QCOMPARE(m_model->groupRole(), QByteArray("text"));
+ QCOMPARE(m_model->rawGroupRole(), QByteArray("text"));
+ QCOMPARE(m_model->sortRole(), QByteArray("size"));
+
+ m_model->setGroupRole(QByteArray());
+ QCOMPARE(m_model->rawGroupRole(), QByteArray());
+ QCOMPARE(m_model->groupRole(), QByteArray("size"));
+}
+
+void KFileItemModelTest::testGroupRoleNotResetBySortRoleChange()
+{
+ m_model->setGroupRole("type");
+ QCOMPARE(m_model->rawGroupRole(), QByteArray("type"));
+
+ m_model->setSortRole("size");
+ QCOMPARE(m_model->rawGroupRole(), QByteArray("type"));
+ QCOMPARE(m_model->groupRole(), QByteArray("type"));
+
+ m_model->setSortRole("modificationtime");
+ QCOMPARE(m_model->rawGroupRole(), QByteArray("type"));
+}
+
+void KFileItemModelTest::testGroupRoleIndependentFromSortRole()
+{
+ QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+
+ m_testDir->createFiles({"b.txt", "c.txt", "d.txt", "e.txt"});
+
+ m_model->setGroupedSorting(true);
+ m_model->setGroupRole("text");
+ m_model->setSortRole("text");
+ m_model->loadDirectory(m_testDir->url());
+ QVERIFY(itemsInsertedSpy.wait());
+
+ QList<QPair<int, QVariant>> expectedGroups;
+ expectedGroups << QPair<int, QVariant>(0, QLatin1String("B"));
+ expectedGroups << QPair<int, QVariant>(1, QLatin1String("C"));
+ expectedGroups << QPair<int, QVariant>(2, QLatin1String("D"));
+ expectedGroups << QPair<int, QVariant>(3, QLatin1String("E"));
+ QCOMPARE(m_model->groups(), expectedGroups);
+
+ m_model->setSortRole("size");
+ QCOMPARE(m_model->groupRole(), QByteArray("text"));
+ QCOMPARE(m_model->groups(), expectedGroups);
+}
+
+void KFileItemModelTest::testGroupRoleChangedSignal()
+{
+ QSignalSpy groupRoleChangedSpy(m_model, &KFileItemModel::groupRoleChanged);
+ QVERIFY(groupRoleChangedSpy.isValid());
+
+ m_model->setGroupRole("size");
+ QCOMPARE(groupRoleChangedSpy.count(), 1);
+ QCOMPARE(groupRoleChangedSpy.at(0).at(0).toByteArray(), QByteArray("size"));
+ QCOMPARE(groupRoleChangedSpy.at(0).at(1).toByteArray(), QByteArray("text"));
+ groupRoleChangedSpy.clear();
+
+ m_model->setGroupRole("size");
+ QCOMPARE(groupRoleChangedSpy.count(), 0);
+
+ m_model->setGroupRole(QByteArray());
+ QCOMPARE(groupRoleChangedSpy.count(), 1);
+ groupRoleChangedSpy.clear();
+
+ m_model->setSortRole("size");
+ QCOMPARE(groupRoleChangedSpy.count(), 1);
+}
+
QTEST_MAIN(KFileItemModelTest)
#include "kfileitemmodeltest.moc"