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"