File indexing completed on 2024-04-28 04:48:58
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 "viewmanager.h" 0008 #include "viewslistdata.h" 0009 #include "viewconfigurationdata.h" 0010 0011 #include "elisa_settings.h" 0012 0013 #include <QSignalSpy> 0014 #include <QTest> 0015 0016 class ViewManagerTests: public QObject 0017 { 0018 Q_OBJECT 0019 0020 public: 0021 0022 explicit ViewManagerTests(QObject *aParent = nullptr) : QObject(aParent) 0023 { 0024 qRegisterMetaType<ViewConfigurationData*>("ViewConfigurationData*"); 0025 } 0026 0027 private Q_SLOTS: 0028 0029 void initTestCase() 0030 { 0031 qRegisterMetaType<ViewManager::RadioSpecificStyle>("ViewManager::RadioSpecificStyle"); 0032 qRegisterMetaType<ViewManager::AlbumViewStyle>("ViewManager::AlbumViewStyle"); 0033 qRegisterMetaType<ElisaUtils::PlayListEntryType>("ElisaUtils::PlayListEntryType"); 0034 qRegisterMetaType<ElisaUtils::FilterType>("ElisaUtils::FilterType"); 0035 qRegisterMetaType<ViewManager::ViewCanBeRated>("ViewManager::ViewCanBeRated"); 0036 qRegisterMetaType<ViewManager::DelegateUseSecondaryText>("ViewManager::DelegateUseSecondaryText"); 0037 qRegisterMetaType<ViewManager::AlbumCardinality>("ViewManager::AlbumCardinality"); 0038 qRegisterMetaType<Qt::SortOrder>("Qt::SortOrder"); 0039 qRegisterMetaType<QAbstractItemModel*>("QAbstractItemModel*"); 0040 qRegisterMetaType<QAbstractProxyModel*>("QAbstractProxyModel*"); 0041 qRegisterMetaType<DataTypes::DataType>("DataTypes::DataType"); 0042 QStandardPaths::setTestModeEnabled(true); 0043 Elisa::ElisaConfiguration::instance(QStringLiteral("testfoo")); 0044 } 0045 0046 void openAlbumViewTest() 0047 { 0048 Elisa::ElisaConfiguration::self()->setDefaults(); 0049 ViewManager viewManager; 0050 ViewsListData viewsData; 0051 viewManager.setViewsData(&viewsData); 0052 0053 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0054 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0055 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0056 0057 viewManager.setInitialIndex(0); 0058 0059 QCOMPARE(openGridViewSpy.count(), 0); 0060 QCOMPARE(openListViewSpy.count(), 0); 0061 QCOMPARE(popOneViewSpy.count(), 0); 0062 0063 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("album1")}, 0064 {DataTypes::ArtistRole, QStringLiteral("artist1")}, 0065 {DataTypes::DatabaseIdRole, 12}, 0066 {DataTypes::ElementTypeRole, ElisaUtils::Album}}); 0067 0068 QCOMPARE(openGridViewSpy.count(), 0); 0069 QCOMPARE(openListViewSpy.count(), 1); 0070 QCOMPARE(popOneViewSpy.count(), 0); 0071 0072 QCOMPARE(openListViewSpy.at(0).count(), 1); 0073 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::TitleRole].toString(), QStringLiteral("album1")); 0074 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0075 } 0076 0077 void openAlbumView2Test() 0078 { 0079 Elisa::ElisaConfiguration::self()->setDefaults(); 0080 ViewManager viewManager; 0081 ViewsListData viewsData; 0082 viewManager.setViewsData(&viewsData); 0083 0084 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0085 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0086 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0087 0088 viewManager.setInitialIndex(0); 0089 0090 QCOMPARE(openGridViewSpy.count(), 0); 0091 QCOMPARE(openListViewSpy.count(), 0); 0092 QCOMPARE(popOneViewSpy.count(), 0); 0093 0094 viewManager.openView(3); 0095 0096 QCOMPARE(openGridViewSpy.count(), 1); 0097 QCOMPARE(openListViewSpy.count(), 0); 0098 QCOMPARE(popOneViewSpy.count(), 0); 0099 0100 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0101 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0102 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0103 0104 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("album1")}, 0105 {DataTypes::ArtistRole, QStringLiteral("artist1")}, 0106 {DataTypes::DatabaseIdRole, 12}, 0107 {DataTypes::ElementTypeRole, ElisaUtils::Album}}); 0108 0109 QCOMPARE(openGridViewSpy.count(), 1); 0110 QCOMPARE(openListViewSpy.count(), 1); 0111 QCOMPARE(popOneViewSpy.count(), 0); 0112 0113 QCOMPARE(openListViewSpy.at(0).count(), 1); 0114 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::TitleRole].toString(), QStringLiteral("album1")); 0115 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0116 0117 viewManager.openView(3); 0118 0119 QCOMPARE(openGridViewSpy.count(), 2); 0120 QCOMPARE(openListViewSpy.count(), 1); 0121 QCOMPARE(popOneViewSpy.count(), 0); 0122 0123 QCOMPARE(openGridViewSpy.at(1).count(), 1); 0124 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0125 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0126 0127 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("album1")}, 0128 {DataTypes::ArtistRole, QStringLiteral("artist1")}, 0129 {DataTypes::DatabaseIdRole, 12}, 0130 {DataTypes::ElementTypeRole, ElisaUtils::Album}}); 0131 0132 QCOMPARE(openGridViewSpy.count(), 2); 0133 QCOMPARE(openListViewSpy.count(), 2); 0134 QCOMPARE(popOneViewSpy.count(), 0); 0135 0136 QCOMPARE(openListViewSpy.at(1).count(), 1); 0137 QCOMPARE(openListViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::TitleRole].toString(), QStringLiteral("album1")); 0138 QCOMPARE(openListViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0139 } 0140 0141 void openAlbumView3Test() 0142 { 0143 Elisa::ElisaConfiguration::self()->setDefaults(); 0144 ViewManager viewManager; 0145 ViewsListData viewsData; 0146 viewManager.setViewsData(&viewsData); 0147 0148 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0149 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0150 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0151 0152 viewManager.setInitialIndex(0); 0153 0154 QCOMPARE(openGridViewSpy.count(), 0); 0155 QCOMPARE(openListViewSpy.count(), 0); 0156 QCOMPARE(popOneViewSpy.count(), 0); 0157 0158 viewManager.openView(3); 0159 0160 QCOMPARE(openGridViewSpy.count(), 1); 0161 QCOMPARE(openListViewSpy.count(), 0); 0162 QCOMPARE(popOneViewSpy.count(), 0); 0163 0164 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0165 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0166 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0167 0168 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("album1")}, 0169 {DataTypes::ArtistRole, QStringLiteral("artist1")}, 0170 {DataTypes::DatabaseIdRole, 12}, 0171 {DataTypes::ElementTypeRole, ElisaUtils::Album}}); 0172 0173 QCOMPARE(openGridViewSpy.count(), 1); 0174 QCOMPARE(openListViewSpy.count(), 1); 0175 QCOMPARE(popOneViewSpy.count(), 0); 0176 0177 QCOMPARE(openListViewSpy.at(0).count(), 1); 0178 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::TitleRole].toString(), QStringLiteral("album1")); 0179 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0180 0181 viewManager.goBack(); 0182 0183 QCOMPARE(openGridViewSpy.count(), 1); 0184 QCOMPARE(openListViewSpy.count(), 1); 0185 QCOMPARE(popOneViewSpy.count(), 1); 0186 0187 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("album1")}, 0188 {DataTypes::ArtistRole, QStringLiteral("artist1")}, 0189 {DataTypes::DatabaseIdRole, 12}, 0190 {DataTypes::ElementTypeRole, ElisaUtils::Album}}); 0191 0192 QCOMPARE(openGridViewSpy.count(), 1); 0193 QCOMPARE(openListViewSpy.count(), 2); 0194 QCOMPARE(popOneViewSpy.count(), 1); 0195 0196 QCOMPARE(openListViewSpy.at(1).count(), 1); 0197 QCOMPARE(openListViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::TitleRole].toString(), QStringLiteral("album1")); 0198 QCOMPARE(openListViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0199 } 0200 0201 void openArtistViewTest() 0202 { 0203 Elisa::ElisaConfiguration::self()->setDefaults(); 0204 ViewManager viewManager; 0205 ViewsListData viewsData; 0206 viewManager.setViewsData(&viewsData); 0207 0208 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0209 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0210 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0211 0212 viewManager.setInitialIndex(0); 0213 0214 QCOMPARE(openGridViewSpy.count(), 0); 0215 QCOMPARE(openListViewSpy.count(), 0); 0216 QCOMPARE(popOneViewSpy.count(), 0); 0217 0218 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("artist1")}, 0219 {DataTypes::DatabaseIdRole, 12}, 0220 {DataTypes::ElementTypeRole, ElisaUtils::Artist}}); 0221 0222 QCOMPARE(openGridViewSpy.count(), 1); 0223 QCOMPARE(openListViewSpy.count(), 0); 0224 QCOMPARE(popOneViewSpy.count(), 0); 0225 0226 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0227 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByArtist); 0228 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0229 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0230 } 0231 0232 void openArtistView2Test() 0233 { 0234 Elisa::ElisaConfiguration::self()->setDefaults(); 0235 ViewManager viewManager; 0236 ViewsListData viewsData; 0237 viewManager.setViewsData(&viewsData); 0238 0239 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0240 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0241 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0242 0243 viewManager.setInitialIndex(0); 0244 0245 QCOMPARE(openGridViewSpy.count(), 0); 0246 QCOMPARE(openListViewSpy.count(), 0); 0247 QCOMPARE(popOneViewSpy.count(), 0); 0248 0249 viewManager.openView(4); 0250 0251 QCOMPARE(openGridViewSpy.count(), 1); 0252 QCOMPARE(openListViewSpy.count(), 0); 0253 QCOMPARE(popOneViewSpy.count(), 0); 0254 0255 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0256 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0257 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Artist); 0258 0259 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("artist1")}, 0260 {DataTypes::DatabaseIdRole, 12}, 0261 {DataTypes::ElementTypeRole, ElisaUtils::Artist}}); 0262 0263 QCOMPARE(openGridViewSpy.count(), 2); 0264 QCOMPARE(openListViewSpy.count(), 0); 0265 QCOMPARE(popOneViewSpy.count(), 0); 0266 0267 QCOMPARE(openGridViewSpy.at(1).count(), 1); 0268 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByArtist); 0269 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0270 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0271 0272 viewManager.openView(4); 0273 0274 QCOMPARE(openGridViewSpy.count(), 3); 0275 QCOMPARE(openListViewSpy.count(), 0); 0276 QCOMPARE(popOneViewSpy.count(), 0); 0277 0278 QCOMPARE(openGridViewSpy.at(2).count(), 1); 0279 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0280 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Artist); 0281 0282 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("artist1")}, 0283 {DataTypes::DatabaseIdRole, 12}, 0284 {DataTypes::ElementTypeRole, ElisaUtils::Artist}}); 0285 0286 QCOMPARE(openGridViewSpy.count(), 4); 0287 QCOMPARE(openListViewSpy.count(), 0); 0288 QCOMPARE(popOneViewSpy.count(), 0); 0289 0290 QCOMPARE(openGridViewSpy.at(3).count(), 1); 0291 QCOMPARE(openGridViewSpy.at(3).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByArtist); 0292 QCOMPARE(openGridViewSpy.at(3).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0293 QCOMPARE(openGridViewSpy.at(3).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0294 } 0295 0296 void openArtistView3Test() 0297 { 0298 Elisa::ElisaConfiguration::self()->setDefaults(); 0299 ViewManager viewManager; 0300 ViewsListData viewsData; 0301 viewManager.setViewsData(&viewsData); 0302 0303 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0304 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0305 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0306 0307 viewManager.setInitialIndex(0); 0308 0309 QCOMPARE(openGridViewSpy.count(), 0); 0310 QCOMPARE(openListViewSpy.count(), 0); 0311 QCOMPARE(popOneViewSpy.count(), 0); 0312 0313 viewManager.openView(4); 0314 0315 QCOMPARE(openGridViewSpy.count(), 1); 0316 QCOMPARE(openListViewSpy.count(), 0); 0317 QCOMPARE(popOneViewSpy.count(), 0); 0318 0319 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0320 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0321 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Artist); 0322 0323 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("artist1")}, 0324 {DataTypes::DatabaseIdRole, 12}, 0325 {DataTypes::ElementTypeRole, ElisaUtils::Artist}}); 0326 0327 QCOMPARE(openGridViewSpy.count(), 2); 0328 QCOMPARE(openListViewSpy.count(), 0); 0329 QCOMPARE(popOneViewSpy.count(), 0); 0330 0331 QCOMPARE(openGridViewSpy.at(1).count(), 1); 0332 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByArtist); 0333 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0334 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0335 0336 viewManager.goBack(); 0337 0338 QCOMPARE(openGridViewSpy.count(), 2); 0339 QCOMPARE(openListViewSpy.count(), 0); 0340 QCOMPARE(popOneViewSpy.count(), 1); 0341 0342 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("artist1")}, 0343 {DataTypes::DatabaseIdRole, 12}, 0344 {DataTypes::ElementTypeRole, ElisaUtils::Artist}}); 0345 0346 QCOMPARE(openGridViewSpy.count(), 3); 0347 QCOMPARE(openListViewSpy.count(), 0); 0348 QCOMPARE(popOneViewSpy.count(), 1); 0349 0350 QCOMPARE(openGridViewSpy.at(2).count(), 1); 0351 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByArtist); 0352 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0353 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0354 } 0355 0356 void openGenreViewTest() 0357 { 0358 Elisa::ElisaConfiguration::self()->setDefaults(); 0359 ViewManager viewManager; 0360 ViewsListData viewsData; 0361 viewManager.setViewsData(&viewsData); 0362 0363 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0364 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0365 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0366 0367 viewManager.setInitialIndex(0); 0368 0369 QCOMPARE(openGridViewSpy.count(), 0); 0370 QCOMPARE(openListViewSpy.count(), 0); 0371 QCOMPARE(popOneViewSpy.count(), 0); 0372 0373 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("genre1")}, 0374 {DataTypes::DatabaseIdRole, 12}, 0375 {DataTypes::ElementTypeRole, ElisaUtils::Genre}}); 0376 0377 QCOMPARE(openGridViewSpy.count(), 1); 0378 QCOMPARE(openListViewSpy.count(), 0); 0379 QCOMPARE(popOneViewSpy.count(), 0); 0380 0381 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0382 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByGenre); 0383 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Artist); 0384 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::GenreRole].toString(), QStringLiteral("genre1")); 0385 } 0386 0387 void openGenreView2Test() 0388 { 0389 Elisa::ElisaConfiguration::self()->setDefaults(); 0390 ViewManager viewManager; 0391 ViewsListData viewsData; 0392 viewManager.setViewsData(&viewsData); 0393 0394 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0395 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0396 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0397 0398 viewManager.setInitialIndex(0); 0399 0400 QCOMPARE(openGridViewSpy.count(), 0); 0401 QCOMPARE(openListViewSpy.count(), 0); 0402 QCOMPARE(popOneViewSpy.count(), 0); 0403 0404 viewManager.openView(6); 0405 0406 QCOMPARE(openGridViewSpy.count(), 1); 0407 QCOMPARE(openListViewSpy.count(), 0); 0408 QCOMPARE(popOneViewSpy.count(), 0); 0409 0410 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0411 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0412 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Genre); 0413 0414 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("genre1")}, 0415 {DataTypes::DatabaseIdRole, 12}, 0416 {DataTypes::ElementTypeRole, ElisaUtils::Genre}}); 0417 0418 QCOMPARE(openGridViewSpy.count(), 2); 0419 QCOMPARE(openListViewSpy.count(), 0); 0420 QCOMPARE(popOneViewSpy.count(), 0); 0421 0422 QCOMPARE(openGridViewSpy.at(1).count(), 1); 0423 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByGenre); 0424 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Artist); 0425 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::GenreRole].toString(), QStringLiteral("genre1")); 0426 0427 viewManager.openView(6); 0428 0429 QCOMPARE(openGridViewSpy.count(), 3); 0430 QCOMPARE(openListViewSpy.count(), 0); 0431 QCOMPARE(popOneViewSpy.count(), 0); 0432 0433 QCOMPARE(openGridViewSpy.at(2).count(), 1); 0434 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0435 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Genre); 0436 0437 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("genre1")}, 0438 {DataTypes::DatabaseIdRole, 12}, 0439 {DataTypes::ElementTypeRole, ElisaUtils::Genre}}); 0440 0441 QCOMPARE(openGridViewSpy.count(), 4); 0442 QCOMPARE(openListViewSpy.count(), 0); 0443 QCOMPARE(popOneViewSpy.count(), 0); 0444 0445 QCOMPARE(openGridViewSpy.at(3).count(), 1); 0446 QCOMPARE(openGridViewSpy.at(3).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByGenre); 0447 QCOMPARE(openGridViewSpy.at(3).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Artist); 0448 QCOMPARE(openGridViewSpy.at(3).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::GenreRole].toString(), QStringLiteral("genre1")); 0449 } 0450 0451 void openGenreView3Test() 0452 { 0453 Elisa::ElisaConfiguration::self()->setDefaults(); 0454 ViewManager viewManager; 0455 ViewsListData viewsData; 0456 viewManager.setViewsData(&viewsData); 0457 0458 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0459 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0460 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0461 0462 viewManager.setInitialIndex(0); 0463 0464 QCOMPARE(openGridViewSpy.count(), 0); 0465 QCOMPARE(openListViewSpy.count(), 0); 0466 QCOMPARE(popOneViewSpy.count(), 0); 0467 0468 viewManager.openView(6); 0469 0470 QCOMPARE(openGridViewSpy.count(), 1); 0471 QCOMPARE(openListViewSpy.count(), 0); 0472 QCOMPARE(popOneViewSpy.count(), 0); 0473 0474 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0475 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0476 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Genre); 0477 0478 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("genre1")}, 0479 {DataTypes::DatabaseIdRole, 12}, 0480 {DataTypes::ElementTypeRole, ElisaUtils::Genre}}); 0481 0482 QCOMPARE(openGridViewSpy.count(), 2); 0483 QCOMPARE(openListViewSpy.count(), 0); 0484 QCOMPARE(popOneViewSpy.count(), 0); 0485 0486 QCOMPARE(openGridViewSpy.at(1).count(), 1); 0487 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByGenre); 0488 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Artist); 0489 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::GenreRole].toString(), QStringLiteral("genre1")); 0490 0491 viewManager.goBack(); 0492 0493 QCOMPARE(openGridViewSpy.count(), 2); 0494 QCOMPARE(openListViewSpy.count(), 0); 0495 QCOMPARE(popOneViewSpy.count(), 1); 0496 0497 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("genre1")}, 0498 {DataTypes::DatabaseIdRole, 12}, 0499 {DataTypes::ElementTypeRole, ElisaUtils::Genre}}); 0500 0501 QCOMPARE(openGridViewSpy.count(), 3); 0502 QCOMPARE(openListViewSpy.count(), 0); 0503 QCOMPARE(popOneViewSpy.count(), 1); 0504 0505 QCOMPARE(openGridViewSpy.at(2).count(), 1); 0506 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByGenre); 0507 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Artist); 0508 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::GenreRole].toString(), QStringLiteral("genre1")); 0509 0510 } 0511 0512 void openArtistFromGenreViewTest() 0513 { 0514 Elisa::ElisaConfiguration::self()->setDefaults(); 0515 ViewManager viewManager; 0516 ViewsListData viewsData; 0517 viewManager.setViewsData(&viewsData); 0518 0519 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0520 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0521 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0522 0523 viewManager.setInitialIndex(0); 0524 0525 QCOMPARE(openGridViewSpy.count(), 0); 0526 QCOMPARE(openListViewSpy.count(), 0); 0527 QCOMPARE(popOneViewSpy.count(), 0); 0528 0529 viewManager.openView(6); 0530 0531 QCOMPARE(openGridViewSpy.count(), 1); 0532 QCOMPARE(openListViewSpy.count(), 0); 0533 QCOMPARE(popOneViewSpy.count(), 0); 0534 0535 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0536 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::NoFilter); 0537 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Genre); 0538 0539 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("genre1")}, 0540 {DataTypes::DatabaseIdRole, 12}, 0541 {DataTypes::ElementTypeRole, ElisaUtils::Genre}}); 0542 0543 QCOMPARE(openGridViewSpy.count(), 2); 0544 QCOMPARE(openListViewSpy.count(), 0); 0545 QCOMPARE(popOneViewSpy.count(), 0); 0546 0547 QCOMPARE(openGridViewSpy.at(1).count(), 1); 0548 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByGenre); 0549 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Artist); 0550 QCOMPARE(openGridViewSpy.at(1).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::GenreRole].toString(), QStringLiteral("genre1")); 0551 0552 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("artist1")}, 0553 {DataTypes::DatabaseIdRole, 12}, 0554 {DataTypes::ElementTypeRole, ElisaUtils::Artist}}); 0555 0556 QCOMPARE(openGridViewSpy.count(), 3); 0557 QCOMPARE(openListViewSpy.count(), 0); 0558 QCOMPARE(popOneViewSpy.count(), 0); 0559 0560 QCOMPARE(openGridViewSpy.at(2).count(), 1); 0561 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByGenreAndArtist); 0562 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0563 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::GenreRole].toString(), QStringLiteral("genre1")); 0564 QCOMPARE(openGridViewSpy.at(2).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0565 } 0566 0567 void openArtistViewAndAlbumFromAnotherArtistTest() 0568 { 0569 Elisa::ElisaConfiguration::self()->setDefaults(); 0570 ViewManager viewManager; 0571 ViewsListData viewsData; 0572 viewManager.setViewsData(&viewsData); 0573 0574 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0575 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0576 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0577 0578 viewManager.setInitialIndex(0); 0579 0580 QCOMPARE(openGridViewSpy.count(), 0); 0581 QCOMPARE(openListViewSpy.count(), 0); 0582 QCOMPARE(popOneViewSpy.count(), 0); 0583 0584 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("artist1")}, 0585 {DataTypes::DatabaseIdRole, 12}, 0586 {DataTypes::ElementTypeRole, ElisaUtils::Artist}}); 0587 0588 QCOMPARE(openGridViewSpy.count(), 1); 0589 QCOMPARE(openListViewSpy.count(), 0); 0590 QCOMPARE(popOneViewSpy.count(), 0); 0591 0592 QCOMPARE(openGridViewSpy.at(0).count(), 1); 0593 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterByArtist); 0594 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Album); 0595 QCOMPARE(openGridViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0596 0597 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("album1")}, 0598 {DataTypes::ArtistRole, QStringLiteral("artist2")}, 0599 {DataTypes::DatabaseIdRole, 12}, 0600 {DataTypes::ElementTypeRole, ElisaUtils::Album}}); 0601 0602 QCOMPARE(openGridViewSpy.count(), 1); 0603 QCOMPARE(openListViewSpy.count(), 1); 0604 QCOMPARE(popOneViewSpy.count(), 0); 0605 0606 QCOMPARE(openListViewSpy.at(0).count(), 1); 0607 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->filterType(), ElisaUtils::FilterById); 0608 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::TitleRole].toString(), QStringLiteral("album1")); 0609 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist2")); 0610 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataType(), ElisaUtils::Track); 0611 } 0612 0613 void openNowPlayingViewTest() 0614 { 0615 Elisa::ElisaConfiguration::self()->setDefaults(); 0616 ViewManager viewManager; 0617 ViewsListData viewsData; 0618 viewManager.setViewsData(&viewsData); 0619 0620 QSignalSpy openGridViewSpy(&viewManager, &ViewManager::openGridView); 0621 QSignalSpy openListViewSpy(&viewManager, &ViewManager::openListView); 0622 QSignalSpy switchContextViewSpy(&viewManager, &ViewManager::switchContextView); 0623 QSignalSpy popOneViewSpy(&viewManager, &ViewManager::popOneView); 0624 0625 viewManager.setInitialIndex(0); 0626 0627 QCOMPARE(openGridViewSpy.count(), 0); 0628 QCOMPARE(openListViewSpy.count(), 0); 0629 QCOMPARE(switchContextViewSpy.count(), 1); 0630 QCOMPARE(popOneViewSpy.count(), 0); 0631 0632 viewManager.openChildView({{DataTypes::TitleRole, QStringLiteral("album1")}, 0633 {DataTypes::ArtistRole, QStringLiteral("artist1")}, 0634 {DataTypes::DatabaseIdRole, 12}, 0635 {DataTypes::ElementTypeRole, ElisaUtils::Album}}); 0636 0637 QCOMPARE(openGridViewSpy.count(), 0); 0638 QCOMPARE(openListViewSpy.count(), 1); 0639 QCOMPARE(switchContextViewSpy.count(), 1); 0640 QCOMPARE(popOneViewSpy.count(), 0); 0641 0642 QCOMPARE(openListViewSpy.at(0).count(), 1); 0643 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::TitleRole].toString(), QStringLiteral("album1")); 0644 QCOMPARE(openListViewSpy.at(0).at(0).value<ViewConfigurationData*>()->dataFilter()[DataTypes::ArtistRole].toString(), QStringLiteral("artist1")); 0645 0646 viewManager.openNowPlaying(); 0647 QCOMPARE(openGridViewSpy.count(), 0); 0648 QCOMPARE(openListViewSpy.count(), 1); 0649 QCOMPARE(switchContextViewSpy.count(), 2); 0650 QCOMPARE(popOneViewSpy.count(), 0); 0651 } 0652 }; 0653 0654 QTEST_GUILESS_MAIN(ViewManagerTests) 0655 0656 0657 #include "viewmanagertest.moc"