1 /* 2 SPDX-FileCopyrightText: 2018 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 3 4 SPDX-License-Identifier: LGPL-3.0-or-later 5 */ 6 7 #include "models/trackmetadatamodel.h" 8 9 #include "databasetestdata.h" 10 11 #include <QAbstractItemModelTester> 12 #include <QDebug> 13 14 #include <QtTest> 15 16 class TrackMetadataModelTests: public QObject, public DatabaseTestData 17 { 18 Q_OBJECT 19 20 public: 21 TrackMetadataModelTests(QObject * aParent=nullptr)22 explicit TrackMetadataModelTests(QObject *aParent = nullptr) : QObject(aParent) 23 { 24 } 25 26 private Q_SLOTS: 27 initTestCase()28 void initTestCase() 29 { 30 } 31 loadOneTrackData()32 void loadOneTrackData() 33 { 34 TrackMetadataModel myModel; 35 QAbstractItemModelTester testModel(&myModel); 36 37 QSignalSpy beginResetSpy(&myModel, &TrackMetadataModel::modelAboutToBeReset); 38 QSignalSpy endResetSpy(&myModel, &TrackMetadataModel::modelReset); 39 QSignalSpy beginInsertRowsSpy(&myModel, &TrackMetadataModel::rowsAboutToBeInserted); 40 QSignalSpy endInsertRowsSpy(&myModel, &TrackMetadataModel::rowsInserted); 41 QSignalSpy dataChangedSpy(&myModel, &TrackMetadataModel::dataChanged); 42 QSignalSpy beginRemovedRowsSpy(&myModel, &TrackMetadataModel::rowsAboutToBeRemoved); 43 QSignalSpy endRemovedRowsSpy(&myModel, &TrackMetadataModel::rowsRemoved); 44 45 QCOMPARE(beginResetSpy.count(), 0); 46 QCOMPARE(endResetSpy.count(), 0); 47 QCOMPARE(beginInsertRowsSpy.count(), 0); 48 QCOMPARE(endInsertRowsSpy.count(), 0); 49 QCOMPARE(dataChangedSpy.count(), 0); 50 QCOMPARE(beginRemovedRowsSpy.count(), 0); 51 QCOMPARE(endRemovedRowsSpy.count(), 0); 52 QCOMPARE(myModel.rowCount(), 0); 53 54 auto trackData = TrackMetadataModel::TrackDataType{{DataTypes::DatabaseIdRole, 1}, 55 {DataTypes::TitleRole, QStringLiteral("title")}, 56 {DataTypes::AlbumRole, QStringLiteral("album")}}; 57 myModel.trackData(trackData); 58 59 QCOMPARE(beginResetSpy.count(), 1); 60 QCOMPARE(endResetSpy.count(), 1); 61 QCOMPARE(beginInsertRowsSpy.count(), 0); 62 QCOMPARE(endInsertRowsSpy.count(), 0); 63 QCOMPARE(dataChangedSpy.count(), 0); 64 QCOMPARE(beginRemovedRowsSpy.count(), 0); 65 QCOMPARE(endRemovedRowsSpy.count(), 0); 66 QCOMPARE(myModel.rowCount(), 2); 67 } 68 modifyTrackInDatabase()69 void modifyTrackInDatabase() 70 { 71 QTemporaryFile databaseFile; 72 databaseFile.open(); 73 74 qDebug() << "addOneTrackWithoutAlbumArtist" << databaseFile.fileName(); 75 76 DatabaseInterface musicDb; 77 78 musicDb.init(QStringLiteral("testDb"), databaseFile.fileName()); 79 80 musicDb.insertTracksList(mNewTracks, mNewCovers); 81 82 TrackMetadataModel myModel; 83 QAbstractItemModelTester testModel(&myModel); 84 85 QSignalSpy beginResetSpy(&myModel, &TrackMetadataModel::modelAboutToBeReset); 86 QSignalSpy endResetSpy(&myModel, &TrackMetadataModel::modelReset); 87 QSignalSpy beginInsertRowsSpy(&myModel, &TrackMetadataModel::rowsAboutToBeInserted); 88 QSignalSpy endInsertRowsSpy(&myModel, &TrackMetadataModel::rowsInserted); 89 QSignalSpy dataChangedSpy(&myModel, &TrackMetadataModel::dataChanged); 90 QSignalSpy beginRemovedRowsSpy(&myModel, &TrackMetadataModel::rowsAboutToBeRemoved); 91 QSignalSpy endRemovedRowsSpy(&myModel, &TrackMetadataModel::rowsRemoved); 92 93 QCOMPARE(beginResetSpy.count(), 0); 94 QCOMPARE(endResetSpy.count(), 0); 95 QCOMPARE(beginInsertRowsSpy.count(), 0); 96 QCOMPARE(endInsertRowsSpy.count(), 0); 97 QCOMPARE(dataChangedSpy.count(), 0); 98 QCOMPARE(beginRemovedRowsSpy.count(), 0); 99 QCOMPARE(endRemovedRowsSpy.count(), 0); 100 QCOMPARE(myModel.rowCount(), 0); 101 102 myModel.setDatabase(&musicDb); 103 104 auto trackId = musicDb.trackIdFromFileName(QUrl::fromLocalFile(QStringLiteral("/$1"))); 105 106 myModel.initializeByIdAndUrl(ElisaUtils::Track, trackId, QUrl::fromLocalFile(QStringLiteral("/$1"))); 107 108 QCOMPARE(beginResetSpy.count(), 1); 109 QCOMPARE(endResetSpy.count(), 1); 110 QCOMPARE(beginInsertRowsSpy.count(), 0); 111 QCOMPARE(endInsertRowsSpy.count(), 0); 112 QCOMPARE(dataChangedSpy.count(), 0); 113 QCOMPARE(beginRemovedRowsSpy.count(), 0); 114 QCOMPARE(endRemovedRowsSpy.count(), 0); 115 QCOMPARE(myModel.rowCount(), 12); 116 117 musicDb.trackHasStartedPlaying(QUrl::fromLocalFile(QStringLiteral("/$2")), QDateTime::currentDateTime()); 118 119 QCOMPARE(beginResetSpy.count(), 1); 120 QCOMPARE(endResetSpy.count(), 1); 121 QCOMPARE(beginInsertRowsSpy.count(), 0); 122 QCOMPARE(endInsertRowsSpy.count(), 0); 123 QCOMPARE(dataChangedSpy.count(), 0); 124 QCOMPARE(beginRemovedRowsSpy.count(), 0); 125 QCOMPARE(endRemovedRowsSpy.count(), 0); 126 QCOMPARE(myModel.rowCount(), 12); 127 } 128 }; 129 130 QTEST_GUILESS_MAIN(TrackMetadataModelTests) 131 132 133 #include "trackmetadatamodeltest.moc" 134