X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/26d02ecbdb8b95bff5371a4deb414b7076cc28b8..d6c086ad04:/src/tests/placesitemmodeltest.cpp diff --git a/src/tests/placesitemmodeltest.cpp b/src/tests/placesitemmodeltest.cpp index 695aa580a..40ee47cbc 100644 --- a/src/tests/placesitemmodeltest.cpp +++ b/src/tests/placesitemmodeltest.cpp @@ -96,7 +96,7 @@ private: QStringList placesUrls(PlacesItemModel *model = nullptr) const; QStringList initialUrls() const; void createPlaceItem(const QString &text, const QUrl &url, const QString &icon); - void removePlaceAfter(int index); + void schedulePlaceRemoval(int index); void cancelPlaceRemoval(int index); void removeTestUserData(); QMimeData *createMimeData(const QList &indexes) const; @@ -190,7 +190,7 @@ void PlacesItemModelTest::createPlaceItem(const QString &text, const QUrl &url, m_model->createPlacesItem(text, url, icon); } -void PlacesItemModelTest::removePlaceAfter(int index) +void PlacesItemModelTest::schedulePlaceRemoval(int index) { m_tobeRemoved.insert(index); } @@ -235,7 +235,7 @@ QMimeData *PlacesItemModelTest::createMimeData(const QList &indexes) const void PlacesItemModelTest::init() { m_model = new PlacesItemModel(); - // WORKAROUND: need to wait for bookmark to load, check: PlacesItemModel::updateBookmarks + // WORKAROUND: need to wait for bookmark to load QTest::qWait(300); QCOMPARE(m_model->count(), m_expectedModelCount); } @@ -511,7 +511,7 @@ void PlacesItemModelTest::testHideItem() item->setHidden(true); // check if items removed was fired - QTRY_COMPARE(m_model->count(), 16); + QTRY_COMPARE(m_model->count(), m_expectedModelCount - 1); QCOMPARE(spyItemsRemoved.count(), 1); spyItemsRemovedArgs = spyItemsRemoved.takeFirst(); removedRange = spyItemsRemovedArgs.at(0).value(); @@ -541,6 +541,14 @@ void PlacesItemModelTest::testHideItem() void PlacesItemModelTest::testSystemItems() { + int tempDirIndex = 3; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + 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()); @@ -555,62 +563,78 @@ void PlacesItemModelTest::testSystemItems() QTRY_COMPARE(itemsInsertedSpy.count(), 1); // make sure the new place get removed - removePlaceAfter(5); + schedulePlaceRemoval(tempDirIndex); QList args = itemsInsertedSpy.takeFirst(); KItemRangeList range = args.at(0).value(); - QCOMPARE(range.first().index, 5); + QCOMPARE(range.first().index, tempDirIndex); QCOMPARE(range.first().count, 1); - QVERIFY(!m_model->placesItem(5)->isSystemItem()); - QCOMPARE(m_model->count(), 18); + QVERIFY(!m_model->placesItem(tempDirIndex)->isSystemItem()); + QCOMPARE(m_model->count(), m_expectedModelCount + 1); QTest::qWait(300); // check if the removal signal is correct QSignalSpy itemsRemovedSpy(m_model, &PlacesItemModel::itemsRemoved); - m_model->deleteItem(5); + m_model->deleteItem(tempDirIndex); QTRY_COMPARE(itemsRemovedSpy.count(), 1); args = itemsRemovedSpy.takeFirst(); range = args.at(0).value(); - QCOMPARE(range.first().index, 5); + QCOMPARE(range.first().index, tempDirIndex); QCOMPARE(range.first().count, 1); QTRY_COMPARE(m_model->count(), m_expectedModelCount); //cancel removal (it was removed above) - cancelPlaceRemoval(5); + cancelPlaceRemoval(tempDirIndex); } void PlacesItemModelTest::testEditBookmark() { + int tempDirIndex = 1; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + QScopedPointer other(new PlacesItemModel()); createPlaceItem(QStringLiteral("Temporary Dir"), QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)), QString()); // make sure that the new item will be removed later - removePlaceAfter(5); + schedulePlaceRemoval(tempDirIndex + 2); QSignalSpy itemsChangedSply(m_model, &PlacesItemModel::itemsChanged); // modify place text - m_model->item(3)->setText(QStringLiteral("Renamed place")); + m_model->item(tempDirIndex)->setText(QStringLiteral("Renamed place")); m_model->refresh(); // check if the correct signal was fired QTRY_COMPARE(itemsChangedSply.count(), 1); QList args = itemsChangedSply.takeFirst(); KItemRangeList range = args.at(0).value(); - QCOMPARE(range.first().index, 3); + QCOMPARE(range.first().index, tempDirIndex); QCOMPARE(range.first().count, 1); QSet roles = args.at(1).value >(); QCOMPARE(roles.size(), 1); QCOMPARE(*roles.begin(), QByteArrayLiteral("text")); - QCOMPARE(m_model->item(3)->text(), QStringLiteral("Renamed place")); + QCOMPARE(m_model->item(tempDirIndex)->text(), QStringLiteral("Renamed place")); // check if the item was updated in the other model - QTRY_COMPARE(other->item(3)->text(), QStringLiteral("Renamed place")); + QTRY_COMPARE(other->item(tempDirIndex)->text(), QStringLiteral("Renamed place")); } void PlacesItemModelTest::testEditAfterCreation() { + int tempDirIndex = 1; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted); @@ -622,24 +646,32 @@ void PlacesItemModelTest::testEditAfterCreation() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - removePlaceAfter(5); + schedulePlaceRemoval(tempDirIndex + 2); // modify place text - PlacesItem *item = m_model->placesItem(3); + PlacesItem *item = m_model->placesItem(tempDirIndex); item->setText(QStringLiteral("Renamed place")); m_model->refresh(); // check if the second model got the changes QTRY_COMPARE(model->count(), m_model->count()); - QTRY_COMPARE(model->placesItem(3)->text(), m_model->placesItem(3)->text()); - QTRY_COMPARE(model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")), - m_model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp"))); - QTRY_COMPARE(model->placesItem(3)->icon(), m_model->placesItem(3)->icon()); - QTRY_COMPARE(model->placesItem(3)->url(), m_model->placesItem(3)->url()); + QTRY_COMPARE(model->placesItem(tempDirIndex)->text(), m_model->placesItem(tempDirIndex)->text()); + QTRY_COMPARE(model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")), + m_model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp"))); + QTRY_COMPARE(model->placesItem(tempDirIndex)->icon(), m_model->placesItem(tempDirIndex)->icon()); + QTRY_COMPARE(model->placesItem(tempDirIndex)->url(), m_model->placesItem(tempDirIndex)->url()); } void PlacesItemModelTest::testEditMetadata() { + int tempDirIndex = 1; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted); @@ -652,25 +684,33 @@ void PlacesItemModelTest::testEditMetadata() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - removePlaceAfter(5); + schedulePlaceRemoval(tempDirIndex + 2); // modify place metadata - PlacesItem *item = m_model->placesItem(3); + PlacesItem *item = m_model->placesItem(tempDirIndex); item->bookmark().setMetaDataItem(QStringLiteral("OnlyInApp"), KAboutData::applicationData().componentName()); m_model->refresh(); // check if the place was modified in both models - QTRY_COMPARE(model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")), + QTRY_COMPARE(model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")), KAboutData::applicationData().componentName()); - QTRY_COMPARE(model->placesItem(3)->text(), m_model->placesItem(3)->text()); - QTRY_COMPARE(model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")), - m_model->placesItem(3)->bookmark().metaDataItem(QStringLiteral("OnlyInApp"))); - QTRY_COMPARE(model->placesItem(3)->icon(), m_model->placesItem(3)->icon()); - QTRY_COMPARE(model->placesItem(3)->url(), m_model->placesItem(3)->url()); + QTRY_COMPARE(model->placesItem(tempDirIndex)->text(), m_model->placesItem(tempDirIndex)->text()); + QTRY_COMPARE(model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp")), + m_model->placesItem(tempDirIndex)->bookmark().metaDataItem(QStringLiteral("OnlyInApp"))); + QTRY_COMPARE(model->placesItem(tempDirIndex)->icon(), m_model->placesItem(tempDirIndex)->icon()); + QTRY_COMPARE(model->placesItem(tempDirIndex)->url(), m_model->placesItem(tempDirIndex)->url()); } void PlacesItemModelTest::testRefresh() { + int tempDirIndex = 3; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QSignalSpy itemsInsertedSpy(m_model, &PlacesItemModel::itemsInserted); @@ -682,10 +722,10 @@ void PlacesItemModelTest::testRefresh() QTRY_COMPARE(model->count(), m_model->count()); // make sure that the new item will be removed later - removePlaceAfter(5); + schedulePlaceRemoval(tempDirIndex); - PlacesItem *item = m_model->placesItem(5); - PlacesItem *sameItem = model->placesItem(5); + PlacesItem *item = m_model->placesItem(tempDirIndex); + PlacesItem *sameItem = model->placesItem(tempDirIndex); QCOMPARE(item->text(), sameItem->text()); // modify place text @@ -734,6 +774,14 @@ void PlacesItemModelTest::testIcons() void PlacesItemModelTest::testDragAndDrop() { + int lastIndex = 2; // last index of places group + if (m_hasDesktopFolder) { + lastIndex++; + } + if (m_hasDownloadsFolder) { + lastIndex++; + } + QList args; KItemRangeList range; QStringList urls = initialUrls(); @@ -744,7 +792,7 @@ void PlacesItemModelTest::testDragAndDrop() // Move the home directory to the end of the places group QMimeData *dropData = createMimeData(QList() << 0); m_model->dropMimeDataBefore(m_model->count() - 1, dropData); - urls.move(0, 4); + urls.move(0, lastIndex); delete dropData; QTRY_COMPARE(itemsInsertedSpy.count(), 1); @@ -762,7 +810,7 @@ void PlacesItemModelTest::testDragAndDrop() range = args.at(0).value(); QCOMPARE(range.size(), 1); QCOMPARE(range.at(0).count, 1); - QCOMPARE(range.at(0).index, 4); + QCOMPARE(range.at(0).index, lastIndex); CHECK_PLACES_URLS(urls); @@ -770,9 +818,9 @@ void PlacesItemModelTest::testDragAndDrop() itemsRemovedSpy.clear(); // Move home directory item back to its original position - dropData = createMimeData(QList() << 4); + dropData = createMimeData(QList() << lastIndex); m_model->dropMimeDataBefore(0, dropData); - urls.move(4, 0); + urls.move(lastIndex, 0); delete dropData; QTRY_COMPARE(itemsInsertedSpy.count(), 1); @@ -783,7 +831,7 @@ void PlacesItemModelTest::testDragAndDrop() range = args.at(0).value(); QCOMPARE(range.size(), 1); QCOMPARE(range.at(0).count, 1); - QCOMPARE(range.at(0).index, 4); + QCOMPARE(range.at(0).index, lastIndex); // insert intem in the requested position args = itemsInsertedSpy.takeFirst(); @@ -845,6 +893,14 @@ void PlacesItemModelTest::testDuplicatedEntries() void PlacesItemModelTest::renameAfterCreation() { + int tempDirIndex = 1; + if (m_hasDesktopFolder) { + tempDirIndex++; + } + if (m_hasDownloadsFolder) { + tempDirIndex++; + } + const QUrl tempUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); QStringList urls = initialUrls(); PlacesItemModel *model = new PlacesItemModel(); @@ -854,10 +910,10 @@ void PlacesItemModelTest::renameAfterCreation() // create a new place createPlaceItem(QStringLiteral("Temporary Dir"), tempUrl, QString()); - urls.insert(5, tempUrl.toLocalFile()); + urls.insert(tempDirIndex + 2, tempUrl.toLocalFile()); // make sure that the new item will be removed later - removePlaceAfter(5); + schedulePlaceRemoval(tempDirIndex + 2); CHECK_PLACES_URLS(urls); QCOMPARE(model->count(), m_model->count()); @@ -866,7 +922,7 @@ void PlacesItemModelTest::renameAfterCreation() // modify place text QSignalSpy changedSpy(m_model, &PlacesItemModel::itemsChanged); - PlacesItem *item = m_model->placesItem(3); + PlacesItem *item = m_model->placesItem(tempDirIndex); item->setText(QStringLiteral("New Temporary Dir")); item->setUrl(item->url()); item->setIcon(item->icon()); @@ -875,8 +931,8 @@ void PlacesItemModelTest::renameAfterCreation() QTRY_COMPARE(changedSpy.count(), 1); // check if the place was modified in both models - QTRY_COMPARE(m_model->placesItem(3)->text(), QStringLiteral("New Temporary Dir")); - QTRY_COMPARE(model->placesItem(3)->text(), QStringLiteral("New Temporary Dir")); + QTRY_COMPARE(m_model->placesItem(tempDirIndex)->text(), QStringLiteral("New Temporary Dir")); + QTRY_COMPARE(model->placesItem(tempDirIndex)->text(), QStringLiteral("New Temporary Dir")); } QTEST_MAIN(PlacesItemModelTest)