┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tests/kfileitemmodeltest.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2013-09-29 15:45:02 +0200
committerFrank Reininghaus <[email protected]>2013-09-29 15:45:14 +0200
commit08710b05c7c4c5930523ad3e3b4550687c167d4a (patch)
treec30abc3c74ec2515cd9ac44f1df051de4022049c /src/tests/kfileitemmodeltest.cpp
parent71a2be8d4ccb278aca5a2a7fa4483be72e293e5f (diff)
Make sure that removeExpandedItems() also removes filtered items
This fixes the problem that filtered child items in Details View may reappear when switching the view mode and the clearing the filter. BUG: 325344 REVIEW: 112962 FIXED-IN: 4.11.3
Diffstat (limited to 'src/tests/kfileitemmodeltest.cpp')
-rw-r--r--src/tests/kfileitemmodeltest.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp
index 391fe5be5..d2a3ebda8 100644
--- a/src/tests/kfileitemmodeltest.cpp
+++ b/src/tests/kfileitemmodeltest.cpp
@@ -76,6 +76,7 @@ private slots:
void testExpandItems();
void testExpandParentItems();
void testMakeExpandedItemHidden();
+ void testRemoveFilteredExpandedItems();
void testSorting();
void testIndexForKeyboardSearch();
void testNameFilter();
@@ -707,6 +708,51 @@ void KFileItemModelTest::testMakeExpandedItemHidden()
}
+void KFileItemModelTest::testRemoveFilteredExpandedItems()
+{
+ QSet<QByteArray> originalModelRoles = m_model->roles();
+ QSet<QByteArray> modelRoles = originalModelRoles;
+ modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
+ m_model->setRoles(modelRoles);
+
+ QStringList files;
+ files << "folder/child" << "file"; // missing folders are created automatically
+ m_testDir->createFiles(files);
+
+ m_model->loadDirectory(m_testDir->url());
+ QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
+
+ // So far, the model contains only "folder/" and "file".
+ QCOMPARE(m_model->count(), 2);
+ QVERIFY(m_model->isExpandable(0));
+ QVERIFY(!m_model->isExpandable(1));
+ QVERIFY(!m_model->isExpanded(0));
+ QVERIFY(!m_model->isExpanded(1));
+ QCOMPARE(itemsInModel(), QStringList() << "folder" << "file");
+
+ // Expand "folder" -> "folder/child" becomes visible.
+ m_model->setExpanded(0, true);
+ QVERIFY(m_model->isExpanded(0));
+ QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
+ QCOMPARE(itemsInModel(), QStringList() << "folder" << "child" << "file");
+
+ // Add a name filter.
+ m_model->setNameFilter("f");
+ QCOMPARE(itemsInModel(), QStringList() << "folder" << "file");
+
+ m_model->setNameFilter("fo");
+ QCOMPARE(itemsInModel(), QStringList() << "folder");
+
+ // Remove all expanded items by changing the roles
+ m_model->setRoles(originalModelRoles);
+ QVERIFY(!m_model->isExpanded(0));
+ QCOMPARE(itemsInModel(), QStringList() << "folder");
+
+ // Remove the name filter and verify that "folder/child" does not reappear.
+ m_model->setNameFilter(QString());
+ QCOMPARE(itemsInModel(), QStringList() << "folder" << "file");
+}
+
void KFileItemModelTest::testSorting()
{
// Create some files with different sizes and modification times to check the different sorting options