File indexing completed on 2024-04-28 04:48:59
0001 /* 0002 SPDX-FileCopyrightText: 2015 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0003 0004 SPDX-License-Identifier: LGPL-3.0-or-later 0005 */ 0006 0007 #include "databasetestdata.h" 0008 0009 #include "databaseinterface.h" 0010 #include "models/viewsmodel.h" 0011 #include "models/viewsproxymodel.h" 0012 #include "viewslistdata.h" 0013 0014 #include <QAbstractItemModelTester> 0015 #include <QHash> 0016 #include <QObject> 0017 #include <QStandardPaths> 0018 #include <QString> 0019 #include <QThread> 0020 #include <QUrl> 0021 #include <QVector> 0022 0023 #include <QSignalSpy> 0024 #include <QTest> 0025 0026 class ViewsModelTests : public QObject, public DatabaseTestData 0027 { 0028 Q_OBJECT 0029 0030 private: 0031 const int mNumOfBaseViews = 9; 0032 0033 private Q_SLOTS: 0034 0035 void initTestCase() 0036 { 0037 qRegisterMetaType<QHash<qulonglong, int>>("QHash<qulonglong,int>"); 0038 qRegisterMetaType<QHash<QString, QUrl>>("QHash<QString,QUrl>"); 0039 qRegisterMetaType<QVector<qlonglong>>("QVector<qlonglong>"); 0040 qRegisterMetaType<QHash<qlonglong, int>>("QHash<qlonglong,int>"); 0041 } 0042 0043 void switchToEmbeddedGenreCategory() 0044 { 0045 DatabaseInterface musicDb; 0046 ViewsModel viewsModel; 0047 ViewsProxyModel viewsProxyModel; 0048 ViewsListData viewsPagesData; 0049 viewsModel.setViewsData(&viewsPagesData); 0050 viewsProxyModel.setSourceModel(&viewsModel); 0051 0052 QAbstractItemModelTester testModel(&viewsModel); 0053 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0054 0055 musicDb.init(QStringLiteral("testDb")); 0056 0057 viewsModel.viewsData()->setDatabase(&musicDb); 0058 0059 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0060 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0061 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0062 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0063 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0064 0065 QCOMPARE(beginInsertRowsSpy.count(), 0); 0066 QCOMPARE(endInsertRowsSpy.count(), 0); 0067 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0068 QCOMPARE(endRemoveRowsSpy.count(), 0); 0069 QCOMPARE(dataChangedSpy.count(), 0); 0070 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0071 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0072 0073 musicDb.insertTracksList(mNewTracks, mNewCovers); 0074 0075 QCOMPARE(beginInsertRowsSpy.count(), 0); 0076 QCOMPARE(endInsertRowsSpy.count(), 0); 0077 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0078 QCOMPARE(endRemoveRowsSpy.count(), 0); 0079 QCOMPARE(dataChangedSpy.count(), 0); 0080 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0081 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0082 0083 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Genre); 0084 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Genre); 0085 0086 QCOMPARE(beginInsertRowsSpy.count(), 1); 0087 QCOMPARE(endInsertRowsSpy.count(), 1); 0088 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0089 QCOMPARE(endRemoveRowsSpy.count(), 0); 0090 QCOMPARE(dataChangedSpy.count(), 0); 0091 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews + 4); 0092 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1 + 4); 0093 0094 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Unknown); 0095 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Unknown); 0096 0097 QCOMPARE(beginInsertRowsSpy.count(), 1); 0098 QCOMPARE(endInsertRowsSpy.count(), 1); 0099 QCOMPARE(beginRemoveRowsSpy.count(), 1); 0100 QCOMPARE(endRemoveRowsSpy.count(), 1); 0101 QCOMPARE(dataChangedSpy.count(), 0); 0102 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0103 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0104 } 0105 0106 void switchToEmbeddedGenreCategoryWithInsert() 0107 { 0108 DatabaseInterface musicDb; 0109 ViewsModel viewsModel; 0110 ViewsProxyModel viewsProxyModel; 0111 ViewsListData viewsPagesData; 0112 viewsModel.setViewsData(&viewsPagesData); 0113 viewsProxyModel.setSourceModel(&viewsModel); 0114 0115 QAbstractItemModelTester testModel(&viewsModel); 0116 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0117 0118 musicDb.init(QStringLiteral("testDb")); 0119 0120 viewsModel.viewsData()->setDatabase(&musicDb); 0121 0122 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0123 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0124 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0125 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0126 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0127 0128 QCOMPARE(beginInsertRowsSpy.count(), 0); 0129 QCOMPARE(endInsertRowsSpy.count(), 0); 0130 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0131 QCOMPARE(endRemoveRowsSpy.count(), 0); 0132 QCOMPARE(dataChangedSpy.count(), 0); 0133 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0134 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0135 0136 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Genre); 0137 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Genre); 0138 0139 QCOMPARE(beginInsertRowsSpy.count(), 0); 0140 QCOMPARE(endInsertRowsSpy.count(), 0); 0141 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0142 QCOMPARE(endRemoveRowsSpy.count(), 0); 0143 QCOMPARE(dataChangedSpy.count(), 0); 0144 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0145 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1); 0146 0147 musicDb.insertTracksList(mNewTracks, mNewCovers); 0148 0149 QCOMPARE(beginInsertRowsSpy.count(), 4); 0150 QCOMPARE(endInsertRowsSpy.count(), 4); 0151 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0152 QCOMPARE(endRemoveRowsSpy.count(), 0); 0153 QCOMPARE(dataChangedSpy.count(), 0); 0154 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews + 4); 0155 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1 + 4); 0156 0157 auto newTracks = DataTypes::ListTrackDataType{ 0158 {true, QStringLiteral("$23"), QStringLiteral("0"), QStringLiteral("track6"), 0159 QStringLiteral("artist2"), QStringLiteral("album3"), {}, 0160 6, 1, QTime::fromMSecsSinceStartOfDay(23), {QUrl::fromLocalFile(QStringLiteral("/test/$23"))}, 0161 QDateTime::fromMSecsSinceEpoch(23), 0162 QUrl::fromLocalFile(QStringLiteral("album3")), 5, true, 0163 QStringLiteral("genre7"), QStringLiteral("composer1"), QStringLiteral("lyricist1"), false}, 0164 {true, QStringLiteral("$24"), QStringLiteral("0"), QStringLiteral("track7"), 0165 QStringLiteral("artist3"), QStringLiteral("album3"), {}, 0166 7, 1, QTime::fromMSecsSinceStartOfDay(24), {QUrl::fromLocalFile(QStringLiteral("/test/$24"))}, 0167 QDateTime::fromMSecsSinceEpoch(24), 0168 QUrl::fromLocalFile(QStringLiteral("album3")), 5, true, 0169 QStringLiteral("genre6"), QStringLiteral("composer1"), QStringLiteral("lyricist1"), false}, 0170 {true, QStringLiteral("$25"), QStringLiteral("0"), QStringLiteral("track8"), 0171 QStringLiteral("artist4"), QStringLiteral("album3"), {}, 0172 8, 1, QTime::fromMSecsSinceStartOfDay(25), {QUrl::fromLocalFile(QStringLiteral("/test/$25"))}, 0173 QDateTime::fromMSecsSinceEpoch(25), 0174 QUrl::fromLocalFile(QStringLiteral("album3")), 5, true, 0175 QStringLiteral("genre5"), QStringLiteral("composer1"), QStringLiteral("lyricist1"), false}}; 0176 0177 auto newCovers = mNewCovers; 0178 newCovers[QStringLiteral("/test/$23")] = QUrl::fromLocalFile(QStringLiteral("album3")); 0179 newCovers[QStringLiteral("/test/$24")] = QUrl::fromLocalFile(QStringLiteral("album3")); 0180 newCovers[QStringLiteral("/test/$25")] = QUrl::fromLocalFile(QStringLiteral("album3")); 0181 0182 musicDb.insertTracksList(newTracks, newCovers); 0183 0184 QCOMPARE(beginInsertRowsSpy.count(), 7); 0185 QCOMPARE(endInsertRowsSpy.count(), 7); 0186 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0187 QCOMPARE(endRemoveRowsSpy.count(), 0); 0188 QCOMPARE(dataChangedSpy.count(), 0); 0189 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews + 7); 0190 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1 + 7); 0191 0192 const auto newTrack = DataTypes::TrackDataType { 0193 true, QStringLiteral("$26"), QStringLiteral("0"), QStringLiteral("track6"), 0194 QStringLiteral("artist2"), QStringLiteral("album3"), {}, 0195 6, 1, QTime::fromMSecsSinceStartOfDay(23), {QUrl::fromLocalFile(QStringLiteral("/test/$23"))}, 0196 QDateTime::fromMSecsSinceEpoch(23), 0197 QUrl::fromLocalFile(QStringLiteral("album3")), 5, true, 0198 QStringLiteral("a genre"), QStringLiteral("composer1"), QStringLiteral("lyricist1"), false}; 0199 0200 const auto newCover = QHash<QString, QUrl>{{QStringLiteral("/test/$26"), QUrl::fromLocalFile(QStringLiteral("album3"))}}; 0201 0202 musicDb.insertTracksList({newTrack}, newCover); 0203 0204 QCOMPARE(beginInsertRowsSpy.count(), 8); 0205 QCOMPARE(endInsertRowsSpy.count(), 8); 0206 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0207 QCOMPARE(endRemoveRowsSpy.count(), 0); 0208 QCOMPARE(dataChangedSpy.count(), 0); 0209 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews + 8); 0210 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1 + 8); 0211 0212 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0213 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0214 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0215 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Albums")); 0216 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Artists")); 0217 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0218 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Files")); 0219 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0220 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(8, 0), Qt::DisplayRole), QStringLiteral("a genre")); 0221 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(9, 0), Qt::DisplayRole), QStringLiteral("genre1")); 0222 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(10, 0), Qt::DisplayRole), QStringLiteral("genre2")); 0223 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(11, 0), Qt::DisplayRole), QStringLiteral("genre3")); 0224 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(12, 0), Qt::DisplayRole), QStringLiteral("genre4")); 0225 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(13, 0), Qt::DisplayRole), QStringLiteral("genre5")); 0226 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(14, 0), Qt::DisplayRole), QStringLiteral("genre6")); 0227 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(15, 0), Qt::DisplayRole), QStringLiteral("genre7")); 0228 0229 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Unknown); 0230 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Unknown); 0231 0232 QCOMPARE(beginInsertRowsSpy.count(), 8); 0233 QCOMPARE(endInsertRowsSpy.count(), 8); 0234 QCOMPARE(beginRemoveRowsSpy.count(),1); 0235 QCOMPARE(endRemoveRowsSpy.count(), 1); 0236 QCOMPARE(dataChangedSpy.count(), 0); 0237 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0238 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0239 } 0240 0241 void switchToEmbeddedAlbumCategoryWithInsertAndRemove() 0242 { 0243 DatabaseInterface musicDb; 0244 ViewsModel viewsModel; 0245 ViewsProxyModel viewsProxyModel; 0246 ViewsListData viewsPagesData; 0247 viewsModel.setViewsData(&viewsPagesData); 0248 viewsProxyModel.setSourceModel(&viewsModel); 0249 0250 QAbstractItemModelTester testModel(&viewsModel); 0251 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0252 0253 musicDb.init(QStringLiteral("testDb")); 0254 0255 viewsModel.viewsData()->setDatabase(&musicDb); 0256 0257 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0258 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0259 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0260 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0261 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0262 0263 QCOMPARE(beginInsertRowsSpy.count(), 0); 0264 QCOMPARE(endInsertRowsSpy.count(), 0); 0265 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0266 QCOMPARE(endRemoveRowsSpy.count(), 0); 0267 QCOMPARE(dataChangedSpy.count(), 0); 0268 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0269 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0270 0271 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Album); 0272 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Album); 0273 0274 QCOMPARE(beginInsertRowsSpy.count(), 0); 0275 QCOMPARE(endInsertRowsSpy.count(), 0); 0276 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0277 QCOMPARE(endRemoveRowsSpy.count(), 0); 0278 QCOMPARE(dataChangedSpy.count(), 0); 0279 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0280 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1); 0281 0282 musicDb.insertTracksList(mNewTracks, mNewCovers); 0283 0284 QCOMPARE(beginInsertRowsSpy.count(), 1); 0285 QCOMPARE(endInsertRowsSpy.count(), 1); 0286 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0287 QCOMPARE(endRemoveRowsSpy.count(), 0); 0288 QCOMPARE(dataChangedSpy.count(), 0); 0289 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews + 5); 0290 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1 + 5); 0291 0292 auto newTracks = DataTypes::ListTrackDataType{ 0293 {true, QStringLiteral("$23"), QStringLiteral("0"), QStringLiteral("track6"), 0294 QStringLiteral("artist2"), QStringLiteral("album8"), {}, 0295 6, 1, QTime::fromMSecsSinceStartOfDay(23), {QUrl::fromLocalFile(QStringLiteral("/test/$23"))}, 0296 QDateTime::fromMSecsSinceEpoch(23), 0297 QUrl::fromLocalFile(QStringLiteral("album8")), 5, true, 0298 QStringLiteral("genre7"), QStringLiteral("composer1"), QStringLiteral("lyricist1"), false}, 0299 {true, QStringLiteral("$24"), QStringLiteral("0"), QStringLiteral("track7"), 0300 QStringLiteral("artist3"), QStringLiteral("album9"), {}, 0301 7, 1, QTime::fromMSecsSinceStartOfDay(24), {QUrl::fromLocalFile(QStringLiteral("/test/$24"))}, 0302 QDateTime::fromMSecsSinceEpoch(24), 0303 QUrl::fromLocalFile(QStringLiteral("album9")), 5, true, 0304 QStringLiteral("genre6"), QStringLiteral("composer1"), QStringLiteral("lyricist1"), false}, 0305 {true, QStringLiteral("$25"), QStringLiteral("0"), QStringLiteral("track8"), 0306 QStringLiteral("artist4"), QStringLiteral("album10"), {}, 0307 8, 1, QTime::fromMSecsSinceStartOfDay(25), {QUrl::fromLocalFile(QStringLiteral("/test/$25"))}, 0308 QDateTime::fromMSecsSinceEpoch(25), 0309 QUrl::fromLocalFile(QStringLiteral("album10")), 5, true, 0310 QStringLiteral("genre5"), QStringLiteral("composer1"), QStringLiteral("lyricist1"), false}}; 0311 0312 auto newCovers = mNewCovers; 0313 newCovers[QStringLiteral("/test/$23")] = QUrl::fromLocalFile(QStringLiteral("album8")); 0314 newCovers[QStringLiteral("/test/$24")] = QUrl::fromLocalFile(QStringLiteral("album9")); 0315 newCovers[QStringLiteral("/test/$25")] = QUrl::fromLocalFile(QStringLiteral("album10")); 0316 0317 musicDb.insertTracksList(newTracks, newCovers); 0318 0319 QCOMPARE(beginInsertRowsSpy.count(), 2); 0320 QCOMPARE(endInsertRowsSpy.count(), 2); 0321 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0322 QCOMPARE(endRemoveRowsSpy.count(), 0); 0323 QCOMPARE(dataChangedSpy.count(), 0); 0324 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews + 8); 0325 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1 + 8); 0326 0327 musicDb.removeTracksList({{QUrl::fromLocalFile(QStringLiteral("/test/$23"))}, 0328 {QUrl::fromLocalFile(QStringLiteral("/test/$24"))}, 0329 {QUrl::fromLocalFile(QStringLiteral("/test/$25"))}}); 0330 0331 QCOMPARE(beginInsertRowsSpy.count(), 2); 0332 QCOMPARE(endInsertRowsSpy.count(), 2); 0333 QCOMPARE(beginRemoveRowsSpy.count(), 3); 0334 QCOMPARE(endRemoveRowsSpy.count(), 3); 0335 QCOMPARE(dataChangedSpy.count(), 0); 0336 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews + 5); 0337 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1 + 5); 0338 0339 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Unknown); 0340 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Unknown); 0341 0342 QCOMPARE(beginInsertRowsSpy.count(), 2); 0343 QCOMPARE(endInsertRowsSpy.count(), 2); 0344 QCOMPARE(beginRemoveRowsSpy.count(), 4); 0345 QCOMPARE(endRemoveRowsSpy.count(), 4); 0346 QCOMPARE(dataChangedSpy.count(), 0); 0347 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0348 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0349 } 0350 0351 void simpleSwitchToEmbeddedAlbumCategory() 0352 { 0353 DatabaseInterface musicDb; 0354 ViewsModel viewsModel; 0355 ViewsProxyModel viewsProxyModel; 0356 ViewsListData viewsPagesData; 0357 viewsModel.setViewsData(&viewsPagesData); 0358 viewsProxyModel.setSourceModel(&viewsModel); 0359 0360 QAbstractItemModelTester testModel(&viewsModel); 0361 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0362 0363 musicDb.init(QStringLiteral("testDb")); 0364 0365 viewsModel.viewsData()->setDatabase(&musicDb); 0366 0367 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0368 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0369 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0370 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0371 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0372 0373 QCOMPARE(beginInsertRowsSpy.count(), 0); 0374 QCOMPARE(endInsertRowsSpy.count(), 0); 0375 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0376 QCOMPARE(endRemoveRowsSpy.count(), 0); 0377 QCOMPARE(dataChangedSpy.count(), 0); 0378 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0379 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0380 0381 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Album); 0382 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Album); 0383 0384 QCOMPARE(beginInsertRowsSpy.count(), 0); 0385 QCOMPARE(endInsertRowsSpy.count(), 0); 0386 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0387 QCOMPARE(endRemoveRowsSpy.count(), 0); 0388 QCOMPARE(dataChangedSpy.count(), 0); 0389 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0390 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1); 0391 0392 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0393 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0394 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0395 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Artists")); 0396 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0397 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Genres")); 0398 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Files")); 0399 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0400 } 0401 0402 void simpleSwitchToEmbeddedArtistCategory() 0403 { 0404 DatabaseInterface musicDb; 0405 ViewsModel viewsModel; 0406 ViewsProxyModel viewsProxyModel; 0407 ViewsListData viewsPagesData; 0408 viewsModel.setViewsData(&viewsPagesData); 0409 viewsProxyModel.setSourceModel(&viewsModel); 0410 0411 QAbstractItemModelTester testModel(&viewsModel); 0412 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0413 0414 musicDb.init(QStringLiteral("testDb")); 0415 0416 viewsModel.viewsData()->setDatabase(&musicDb); 0417 0418 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0419 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0420 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0421 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0422 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0423 0424 QCOMPARE(beginInsertRowsSpy.count(), 0); 0425 QCOMPARE(endInsertRowsSpy.count(), 0); 0426 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0427 QCOMPARE(endRemoveRowsSpy.count(), 0); 0428 QCOMPARE(dataChangedSpy.count(), 0); 0429 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0430 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0431 0432 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Artist); 0433 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Artist); 0434 0435 QCOMPARE(beginInsertRowsSpy.count(), 0); 0436 QCOMPARE(endInsertRowsSpy.count(), 0); 0437 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0438 QCOMPARE(endRemoveRowsSpy.count(), 0); 0439 QCOMPARE(dataChangedSpy.count(), 0); 0440 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0441 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1); 0442 0443 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0444 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0445 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0446 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Albums")); 0447 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0448 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Genres")); 0449 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Files")); 0450 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0451 } 0452 0453 void simpleSwitchToEmbeddedGenreCategory() 0454 { 0455 DatabaseInterface musicDb; 0456 ViewsModel viewsModel; 0457 ViewsProxyModel viewsProxyModel; 0458 ViewsListData viewsPagesData; 0459 viewsModel.setViewsData(&viewsPagesData); 0460 viewsProxyModel.setSourceModel(&viewsModel); 0461 0462 QAbstractItemModelTester testModel(&viewsModel); 0463 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0464 0465 musicDb.init(QStringLiteral("testDb")); 0466 0467 viewsModel.viewsData()->setDatabase(&musicDb); 0468 0469 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0470 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0471 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0472 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0473 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0474 0475 QCOMPARE(beginInsertRowsSpy.count(), 0); 0476 QCOMPARE(endInsertRowsSpy.count(), 0); 0477 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0478 QCOMPARE(endRemoveRowsSpy.count(), 0); 0479 QCOMPARE(dataChangedSpy.count(), 0); 0480 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0481 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0482 0483 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Genre); 0484 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Genre); 0485 0486 QCOMPARE(beginInsertRowsSpy.count(), 0); 0487 QCOMPARE(endInsertRowsSpy.count(), 0); 0488 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0489 QCOMPARE(endRemoveRowsSpy.count(), 0); 0490 QCOMPARE(dataChangedSpy.count(), 0); 0491 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0492 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1); 0493 0494 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0495 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0496 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0497 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Albums")); 0498 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Artists")); 0499 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0500 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Files")); 0501 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0502 } 0503 0504 void simpleSwitchToEmbeddedAlbumCategoryWithoutDatabase() 0505 { 0506 ViewsModel viewsModel; 0507 ViewsProxyModel viewsProxyModel; 0508 ViewsListData viewsPagesData; 0509 viewsModel.setViewsData(&viewsPagesData); 0510 viewsProxyModel.setSourceModel(&viewsModel); 0511 0512 QAbstractItemModelTester testModel(&viewsModel); 0513 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0514 0515 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0516 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0517 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0518 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0519 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0520 0521 QCOMPARE(beginInsertRowsSpy.count(), 0); 0522 QCOMPARE(endInsertRowsSpy.count(), 0); 0523 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0524 QCOMPARE(endRemoveRowsSpy.count(), 0); 0525 QCOMPARE(dataChangedSpy.count(), 0); 0526 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0527 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0528 0529 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Album); 0530 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Album); 0531 0532 QCOMPARE(beginInsertRowsSpy.count(), 0); 0533 QCOMPARE(endInsertRowsSpy.count(), 0); 0534 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0535 QCOMPARE(endRemoveRowsSpy.count(), 0); 0536 QCOMPARE(dataChangedSpy.count(), 0); 0537 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0538 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1); 0539 0540 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0541 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0542 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0543 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Artists")); 0544 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0545 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Genres")); 0546 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Files")); 0547 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0548 } 0549 0550 void simpleSwitchToEmbeddedArtistCategoryWithoutDatabase() 0551 { 0552 ViewsModel viewsModel; 0553 ViewsProxyModel viewsProxyModel; 0554 ViewsListData viewsPagesData; 0555 viewsModel.setViewsData(&viewsPagesData); 0556 viewsProxyModel.setSourceModel(&viewsModel); 0557 0558 QAbstractItemModelTester testModel(&viewsModel); 0559 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0560 0561 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0562 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0563 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0564 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0565 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0566 0567 QCOMPARE(beginInsertRowsSpy.count(), 0); 0568 QCOMPARE(endInsertRowsSpy.count(), 0); 0569 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0570 QCOMPARE(endRemoveRowsSpy.count(), 0); 0571 QCOMPARE(dataChangedSpy.count(), 0); 0572 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0573 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0574 0575 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Artist); 0576 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Artist); 0577 0578 QCOMPARE(beginInsertRowsSpy.count(), 0); 0579 QCOMPARE(endInsertRowsSpy.count(), 0); 0580 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0581 QCOMPARE(endRemoveRowsSpy.count(), 0); 0582 QCOMPARE(dataChangedSpy.count(), 0); 0583 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0584 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1); 0585 0586 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0587 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0588 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0589 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Albums")); 0590 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0591 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Genres")); 0592 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Files")); 0593 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0594 } 0595 0596 void simpleSwitchToEmbeddedGenreCategoryWithoutDatabase() 0597 { 0598 ViewsModel viewsModel; 0599 ViewsProxyModel viewsProxyModel; 0600 ViewsListData viewsPagesData; 0601 viewsModel.setViewsData(&viewsPagesData); 0602 viewsProxyModel.setSourceModel(&viewsModel); 0603 0604 QAbstractItemModelTester testModel(&viewsModel); 0605 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0606 0607 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0608 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0609 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0610 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0611 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0612 0613 QCOMPARE(beginInsertRowsSpy.count(), 0); 0614 QCOMPARE(endInsertRowsSpy.count(), 0); 0615 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0616 QCOMPARE(endRemoveRowsSpy.count(), 0); 0617 QCOMPARE(dataChangedSpy.count(), 0); 0618 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0619 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0620 0621 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Genre); 0622 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Genre); 0623 0624 QCOMPARE(beginInsertRowsSpy.count(), 0); 0625 QCOMPARE(endInsertRowsSpy.count(), 0); 0626 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0627 QCOMPARE(endRemoveRowsSpy.count(), 0); 0628 QCOMPARE(dataChangedSpy.count(), 0); 0629 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0630 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1); 0631 0632 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0633 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0634 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0635 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Albums")); 0636 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Artists")); 0637 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0638 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Files")); 0639 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0640 } 0641 0642 void switchToEmbeddedAlbumCategoryAndToEmbeddedArtistCategory() 0643 { 0644 DatabaseInterface musicDb; 0645 ViewsModel viewsModel; 0646 ViewsProxyModel viewsProxyModel; 0647 ViewsListData viewsPagesData; 0648 viewsModel.setViewsData(&viewsPagesData); 0649 viewsProxyModel.setSourceModel(&viewsModel); 0650 0651 QAbstractItemModelTester testModel(&viewsModel); 0652 QAbstractItemModelTester testProxyModel(&viewsProxyModel); 0653 0654 musicDb.init(QStringLiteral("testDb")); 0655 0656 viewsModel.viewsData()->setDatabase(&musicDb); 0657 0658 QSignalSpy beginInsertRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeInserted); 0659 QSignalSpy endInsertRowsSpy(&viewsModel, &ViewsModel::rowsInserted); 0660 QSignalSpy beginRemoveRowsSpy(&viewsModel, &ViewsModel::rowsAboutToBeRemoved); 0661 QSignalSpy endRemoveRowsSpy(&viewsModel, &ViewsModel::rowsRemoved); 0662 QSignalSpy dataChangedSpy(&viewsModel, &ViewsModel::dataChanged); 0663 0664 QCOMPARE(beginInsertRowsSpy.count(), 0); 0665 QCOMPARE(endInsertRowsSpy.count(), 0); 0666 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0667 QCOMPARE(endRemoveRowsSpy.count(), 0); 0668 QCOMPARE(dataChangedSpy.count(), 0); 0669 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0670 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0671 0672 musicDb.insertTracksList(mNewTracks, mNewCovers); 0673 0674 QCOMPARE(beginInsertRowsSpy.count(), 0); 0675 QCOMPARE(endInsertRowsSpy.count(), 0); 0676 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0677 QCOMPARE(endRemoveRowsSpy.count(), 0); 0678 QCOMPARE(dataChangedSpy.count(), 0); 0679 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0680 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0681 0682 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0683 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0684 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0685 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Albums")); 0686 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Artists")); 0687 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0688 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Genres")); 0689 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Files")); 0690 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(8, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0691 0692 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Album); 0693 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Album); 0694 0695 beginInsertRowsSpy.wait(100); 0696 0697 QCOMPARE(beginInsertRowsSpy.count(), 1); 0698 QCOMPARE(endInsertRowsSpy.count(), 1); 0699 QCOMPARE(beginRemoveRowsSpy.count(), 0); 0700 QCOMPARE(endRemoveRowsSpy.count(), 0); 0701 QCOMPARE(dataChangedSpy.count(), 0); 0702 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews + 5); 0703 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1 + 5); 0704 0705 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0706 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0707 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0708 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Artists")); 0709 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0710 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Genres")); 0711 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Files")); 0712 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0713 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(8, 0), Qt::DisplayRole), QStringLiteral("album1")); 0714 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(9, 0), Qt::DisplayRole), QStringLiteral("album2")); 0715 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(10, 0), Qt::DisplayRole), QStringLiteral("album3")); 0716 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(11, 0), Qt::DisplayRole), QStringLiteral("album3")); 0717 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(12, 0), Qt::DisplayRole), QStringLiteral("album4")); 0718 0719 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Artist); 0720 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Artist); 0721 0722 beginInsertRowsSpy.wait(100); 0723 0724 QCOMPARE(beginInsertRowsSpy.count(), 2); 0725 QCOMPARE(endInsertRowsSpy.count(), 2); 0726 QCOMPARE(beginRemoveRowsSpy.count(), 1); 0727 QCOMPARE(endRemoveRowsSpy.count(), 1); 0728 QCOMPARE(dataChangedSpy.count(), 0); 0729 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews + 7); 0730 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews - 1 + 7); 0731 0732 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0733 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0734 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0735 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Albums")); 0736 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0737 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Genres")); 0738 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Files")); 0739 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0740 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(8, 0), Qt::DisplayRole), QStringLiteral("artist1")); 0741 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(9, 0), Qt::DisplayRole), QStringLiteral("artist1 and artist2")); 0742 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(10, 0), Qt::DisplayRole), QStringLiteral("artist2")); 0743 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(11, 0), Qt::DisplayRole), QStringLiteral("artist3")); 0744 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(12, 0), Qt::DisplayRole), QStringLiteral("artist4")); 0745 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(13, 0), Qt::DisplayRole), QStringLiteral("artist7")); 0746 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(14, 0), Qt::DisplayRole), QStringLiteral("Various Artists")); 0747 0748 viewsModel.viewsData()->setEmbeddedCategory(ElisaUtils::Unknown); 0749 viewsProxyModel.setEmbeddedCategory(ElisaUtils::Unknown); 0750 0751 beginInsertRowsSpy.wait(100); 0752 0753 QCOMPARE(beginInsertRowsSpy.count(), 2); 0754 QCOMPARE(endInsertRowsSpy.count(), 2); 0755 QCOMPARE(beginRemoveRowsSpy.count(), 2); 0756 QCOMPARE(endRemoveRowsSpy.count(), 2); 0757 QCOMPARE(dataChangedSpy.count(), 0); 0758 QCOMPARE(viewsModel.rowCount(), mNumOfBaseViews); 0759 QCOMPARE(viewsProxyModel.rowCount(), mNumOfBaseViews); 0760 0761 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(0, 0), Qt::DisplayRole), QStringLiteral("Now Playing")); 0762 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(1, 0), Qt::DisplayRole), QStringLiteral("Recently Played")); 0763 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(2, 0), Qt::DisplayRole), QStringLiteral("Frequently Played")); 0764 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(3, 0), Qt::DisplayRole), QStringLiteral("Albums")); 0765 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(4, 0), Qt::DisplayRole), QStringLiteral("Artists")); 0766 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(5, 0), Qt::DisplayRole), QStringLiteral("Tracks")); 0767 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(6, 0), Qt::DisplayRole), QStringLiteral("Genres")); 0768 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(7, 0), Qt::DisplayRole), QStringLiteral("Files")); 0769 QCOMPARE(viewsProxyModel.data(viewsProxyModel.index(8, 0), Qt::DisplayRole), QStringLiteral("Radio Stations")); 0770 } 0771 }; 0772 0773 QTEST_GUILESS_MAIN(ViewsModelTests) 0774 0775 #include "viewsmodeltest.moc"