File indexing completed on 2024-04-28 04:48:58
0001 /* 0002 SPDX-FileCopyrightText: 2018 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0003 0004 SPDX-License-Identifier: LGPL-3.0-or-later 0005 */ 0006 0007 #include "models/trackmetadatamodel.h" 0008 0009 #include "databasetestdata.h" 0010 0011 #include <QAbstractItemModelTester> 0012 #include <QDebug> 0013 #include <QTemporaryFile> 0014 0015 #include <QSignalSpy> 0016 #include <QTest> 0017 0018 class TrackMetadataModelTests: public QObject, public DatabaseTestData 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 0024 explicit TrackMetadataModelTests(QObject *aParent = nullptr) : QObject(aParent) 0025 { 0026 } 0027 0028 private Q_SLOTS: 0029 0030 void initTestCase() 0031 { 0032 } 0033 0034 void loadOneTrackData() 0035 { 0036 TrackMetadataModel myModel; 0037 QAbstractItemModelTester testModel(&myModel); 0038 0039 QSignalSpy beginResetSpy(&myModel, &TrackMetadataModel::modelAboutToBeReset); 0040 QSignalSpy endResetSpy(&myModel, &TrackMetadataModel::modelReset); 0041 QSignalSpy beginInsertRowsSpy(&myModel, &TrackMetadataModel::rowsAboutToBeInserted); 0042 QSignalSpy endInsertRowsSpy(&myModel, &TrackMetadataModel::rowsInserted); 0043 QSignalSpy dataChangedSpy(&myModel, &TrackMetadataModel::dataChanged); 0044 QSignalSpy beginRemovedRowsSpy(&myModel, &TrackMetadataModel::rowsAboutToBeRemoved); 0045 QSignalSpy endRemovedRowsSpy(&myModel, &TrackMetadataModel::rowsRemoved); 0046 0047 QCOMPARE(beginResetSpy.count(), 0); 0048 QCOMPARE(endResetSpy.count(), 0); 0049 QCOMPARE(beginInsertRowsSpy.count(), 0); 0050 QCOMPARE(endInsertRowsSpy.count(), 0); 0051 QCOMPARE(dataChangedSpy.count(), 0); 0052 QCOMPARE(beginRemovedRowsSpy.count(), 0); 0053 QCOMPARE(endRemovedRowsSpy.count(), 0); 0054 QCOMPARE(myModel.rowCount(), 0); 0055 0056 auto trackData = TrackMetadataModel::TrackDataType{{DataTypes::DatabaseIdRole, 1}, 0057 {DataTypes::TitleRole, QStringLiteral("title")}, 0058 {DataTypes::AlbumRole, QStringLiteral("album")}}; 0059 myModel.trackData(trackData); 0060 0061 QCOMPARE(beginResetSpy.count(), 1); 0062 QCOMPARE(endResetSpy.count(), 1); 0063 QCOMPARE(beginInsertRowsSpy.count(), 0); 0064 QCOMPARE(endInsertRowsSpy.count(), 0); 0065 QCOMPARE(dataChangedSpy.count(), 0); 0066 QCOMPARE(beginRemovedRowsSpy.count(), 0); 0067 QCOMPARE(endRemovedRowsSpy.count(), 0); 0068 QCOMPARE(myModel.rowCount(), 2); 0069 } 0070 0071 void modifyTrackInDatabase() 0072 { 0073 QTemporaryFile databaseFile; 0074 databaseFile.open(); 0075 0076 qDebug() << "addOneTrackWithoutAlbumArtist" << databaseFile.fileName(); 0077 0078 DatabaseInterface musicDb; 0079 0080 musicDb.init(QStringLiteral("testDb"), databaseFile.fileName()); 0081 0082 musicDb.insertTracksList(mNewTracks, mNewCovers); 0083 0084 TrackMetadataModel myModel; 0085 QAbstractItemModelTester testModel(&myModel); 0086 0087 QSignalSpy beginResetSpy(&myModel, &TrackMetadataModel::modelAboutToBeReset); 0088 QSignalSpy endResetSpy(&myModel, &TrackMetadataModel::modelReset); 0089 QSignalSpy beginInsertRowsSpy(&myModel, &TrackMetadataModel::rowsAboutToBeInserted); 0090 QSignalSpy endInsertRowsSpy(&myModel, &TrackMetadataModel::rowsInserted); 0091 QSignalSpy dataChangedSpy(&myModel, &TrackMetadataModel::dataChanged); 0092 QSignalSpy beginRemovedRowsSpy(&myModel, &TrackMetadataModel::rowsAboutToBeRemoved); 0093 QSignalSpy endRemovedRowsSpy(&myModel, &TrackMetadataModel::rowsRemoved); 0094 0095 QCOMPARE(beginResetSpy.count(), 0); 0096 QCOMPARE(endResetSpy.count(), 0); 0097 QCOMPARE(beginInsertRowsSpy.count(), 0); 0098 QCOMPARE(endInsertRowsSpy.count(), 0); 0099 QCOMPARE(dataChangedSpy.count(), 0); 0100 QCOMPARE(beginRemovedRowsSpy.count(), 0); 0101 QCOMPARE(endRemovedRowsSpy.count(), 0); 0102 QCOMPARE(myModel.rowCount(), 0); 0103 0104 myModel.setDatabase(&musicDb); 0105 0106 auto trackId = musicDb.trackIdFromFileName(QUrl::fromLocalFile(QStringLiteral("/$1"))); 0107 0108 myModel.initializeByIdAndUrl(ElisaUtils::Track, trackId, QUrl::fromLocalFile(QStringLiteral("/$1"))); 0109 0110 QCOMPARE(beginResetSpy.count(), 1); 0111 QCOMPARE(endResetSpy.count(), 1); 0112 QCOMPARE(beginInsertRowsSpy.count(), 0); 0113 QCOMPARE(endInsertRowsSpy.count(), 0); 0114 QCOMPARE(dataChangedSpy.count(), 0); 0115 QCOMPARE(beginRemovedRowsSpy.count(), 0); 0116 QCOMPARE(endRemovedRowsSpy.count(), 0); 0117 QCOMPARE(myModel.rowCount(), 12); 0118 0119 musicDb.trackHasStartedPlaying(QUrl::fromLocalFile(QStringLiteral("/$2")), QDateTime::currentDateTime()); 0120 0121 QCOMPARE(beginResetSpy.count(), 1); 0122 QCOMPARE(endResetSpy.count(), 1); 0123 QCOMPARE(beginInsertRowsSpy.count(), 0); 0124 QCOMPARE(endInsertRowsSpy.count(), 0); 0125 QCOMPARE(dataChangedSpy.count(), 0); 0126 QCOMPARE(beginRemovedRowsSpy.count(), 0); 0127 QCOMPARE(endRemovedRowsSpy.count(), 0); 0128 QCOMPARE(myModel.rowCount(), 12); 0129 } 0130 }; 0131 0132 QTEST_GUILESS_MAIN(TrackMetadataModelTests) 0133 0134 0135 #include "trackmetadatamodeltest.moc"