┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tests/kfileitemmodeltest.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2013-06-18 17:39:56 +0200
committerFrank Reininghaus <[email protected]>2013-06-18 17:39:56 +0200
commit75ed1946f8743bc924d28a49ca87df1392f1d408 (patch)
treead24a167d46f1a88ffaf0a64d61a9c085a1be7f2 /src/tests/kfileitemmodeltest.cpp
parent9cf54dcc025073f29e6a1f55c83c4edcec6a5ea3 (diff)
Ensure that the "Sort by Type" setting is respected
Before this commit, switching from, e.g., "Sort by Name" to "Sort by Type" sometimes had no effect until the view was refreshed. The problem was that the re-sorting was triggered before the type information was actually added to the model. BUG: 310705 BUG: 312014 FIXED-IN: 4.10.5 REVIEW: 111004
Diffstat (limited to 'src/tests/kfileitemmodeltest.cpp')
-rw-r--r--src/tests/kfileitemmodeltest.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp
index e636bcd91..fd6c2be90 100644
--- a/src/tests/kfileitemmodeltest.cpp
+++ b/src/tests/kfileitemmodeltest.cpp
@@ -67,6 +67,7 @@ private slots:
void testSetData();
void testSetDataWithModifiedSortRole_data();
void testSetDataWithModifiedSortRole();
+ void testChangeSortRole();
void testModelConsistencyWhenInsertingItems();
void testItemRangeConsistencyWhenInsertingItems();
void testExpandItems();
@@ -274,6 +275,8 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
// Changing the value of a sort-role must result in
// a reordering of the items.
QCOMPARE(m_model->sortRole(), QByteArray("text"));
+ m_model->setSortRole("rating");
+ QCOMPARE(m_model->sortRole(), QByteArray("rating"));
QStringList files;
files << "a.txt" << "b.txt" << "c.txt";
@@ -299,7 +302,6 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
ratingC.insert("rating", 6);
m_model->setData(2, ratingC);
- m_model->setSortRole("rating");
QCOMPARE(m_model->data(0).value("rating").toInt(), 2);
QCOMPARE(m_model->data(1).value("rating").toInt(), 4);
QCOMPARE(m_model->data(2).value("rating").toInt(), 6);
@@ -320,6 +322,45 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
QVERIFY(isModelConsistent());
}
+void KFileItemModelTest::testChangeSortRole()
+{
+ QCOMPARE(m_model->sortRole(), QByteArray("text"));
+
+ QStringList files;
+ files << "a.txt" << "b.jpg" << "c.txt";
+ m_testDir->createFiles(files);
+
+ m_model->loadDirectory(m_testDir->url());
+ QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
+ QCOMPARE(itemsInModel(), QStringList() << "a.txt" << "b.jpg" << "c.txt");
+
+ // Simulate that KFileItemModelRolesUpdater determines the mime type.
+ // Resorting the files by 'type' will only work immediately if their
+ // mime types are known.
+ for (int index = 0; index < m_model->count(); ++index) {
+ m_model->fileItem(index).determineMimeType();
+ }
+
+ // Now: sort by type.
+ QSignalSpy spyItemsMoved(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)));
+ m_model->setSortRole("type");
+ QCOMPARE(m_model->sortRole(), QByteArray("type"));
+ QVERIFY(!spyItemsMoved.isEmpty());
+
+ // The actual order of the files might depend on the translation of the
+ // result of KFileItem::mimeComment() in the user's language.
+ QStringList version1;
+ version1 << "b.jpg" << "a.txt" << "c.txt";
+
+ QStringList version2;
+ version2 << "a.txt" << "c.txt" << "b.jpg";
+
+ const bool ok1 = (itemsInModel() == version1);
+ const bool ok2 = (itemsInModel() == version2);
+
+ QVERIFY(ok1 || ok2);
+}
+
void KFileItemModelTest::testModelConsistencyWhenInsertingItems()
{
//QSKIP("Temporary disabled", SkipSingle);