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<int> &indexes) const;
m_model->createPlacesItem(text, url, icon);
}
-void PlacesItemModelTest::removePlaceAfter(int index)
+void PlacesItemModelTest::schedulePlaceRemoval(int index)
{
m_tobeRemoved.insert(index);
}
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);
}
QTRY_COMPARE(itemsInsertedSpy.count(), 1);
// make sure the new place get removed
- removePlaceAfter(tempDirIndex);
+ schedulePlaceRemoval(tempDirIndex);
QList<QVariant> args = itemsInsertedSpy.takeFirst();
KItemRangeList range = args.at(0).value<KItemRangeList>();
void PlacesItemModelTest::testEditBookmark()
{
+ int tempDirIndex = 1;
+ if (m_hasDesktopFolder) {
+ tempDirIndex++;
+ }
+ if (m_hasDownloadsFolder) {
+ tempDirIndex++;
+ }
+
QScopedPointer<PlacesItemModel> 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<QVariant> args = itemsChangedSply.takeFirst();
KItemRangeList range = args.at(0).value<KItemRangeList>();
- QCOMPARE(range.first().index, 3);
+ QCOMPARE(range.first().index, tempDirIndex);
QCOMPARE(range.first().count, 1);
QSet<QByteArray> roles = args.at(1).value<QSet<QByteArray> >();
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);
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);
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);
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
void PlacesItemModelTest::testDragAndDrop()
{
+ int lastIndex = 2; // last index of places group
+ if (m_hasDesktopFolder) {
+ lastIndex++;
+ }
+ if (m_hasDownloadsFolder) {
+ lastIndex++;
+ }
+
QList<QVariant> args;
KItemRangeList range;
QStringList urls = initialUrls();
// Move the home directory to the end of the places group
QMimeData *dropData = createMimeData(QList<int>() << 0);
m_model->dropMimeDataBefore(m_model->count() - 1, dropData);
- urls.move(0, 4);
+ urls.move(0, lastIndex);
delete dropData;
QTRY_COMPARE(itemsInsertedSpy.count(), 1);
range = args.at(0).value<KItemRangeList>();
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);
itemsRemovedSpy.clear();
// Move home directory item back to its original position
- dropData = createMimeData(QList<int>() << 4);
+ dropData = createMimeData(QList<int>() << lastIndex);
m_model->dropMimeDataBefore(0, dropData);
- urls.move(4, 0);
+ urls.move(lastIndex, 0);
delete dropData;
QTRY_COMPARE(itemsInsertedSpy.count(), 1);
range = args.at(0).value<KItemRangeList>();
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();
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();
// 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());
// 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());
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)