diff --git a/autotests/data/elisaDatabase.v0.3.db b/autotests/data/elisaDatabase.v0.3.db new file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@ #include #include @@ -4843,6 +4845,41 @@ QCOMPARE(musicDbDatabaseErrorSpy.count(), 0); QCOMPARE(musicDbCleanedDatabaseSpy.count(), 1); } + + void upgradeFromStableVersion() + { + auto dbTestFile = QString{QStringLiteral(LOCAL_FILE_TESTS_WORKING_PATH) + QStringLiteral("/elisaDatabase.v0.3.db")}; + auto dbOriginFile = QString{QStringLiteral(LOCAL_FILE_TESTS_SAMPLE_FILES_PATH) + QStringLiteral("/elisaDatabase.v0.3.db")}; + QFile::remove(dbTestFile); + QFile::copy(dbOriginFile, dbTestFile); + + DatabaseInterface musicDb; + + musicDb.init(QStringLiteral("testDb"), dbTestFile); + + QSignalSpy musicDbArtistAddedSpy(&musicDb, &DatabaseInterface::artistsAdded); + QSignalSpy musicDbAlbumAddedSpy(&musicDb, &DatabaseInterface::albumsAdded); + QSignalSpy musicDbTrackAddedSpy(&musicDb, &DatabaseInterface::tracksAdded); + QSignalSpy musicDbArtistRemovedSpy(&musicDb, &DatabaseInterface::artistRemoved); + QSignalSpy musicDbAlbumRemovedSpy(&musicDb, &DatabaseInterface::albumRemoved); + QSignalSpy musicDbTrackRemovedSpy(&musicDb, &DatabaseInterface::trackRemoved); + QSignalSpy musicDbAlbumModifiedSpy(&musicDb, &DatabaseInterface::albumModified); + QSignalSpy musicDbTrackModifiedSpy(&musicDb, &DatabaseInterface::trackModified); + QSignalSpy musicDbDatabaseErrorSpy(&musicDb, &DatabaseInterface::databaseError); + + QCOMPARE(musicDb.allAlbumsData().count(), 5); + QCOMPARE(musicDb.allArtistsData().count(), 7); + QCOMPARE(musicDb.allTracksData().count(), 22); + QCOMPARE(musicDbArtistAddedSpy.count(), 0); + QCOMPARE(musicDbAlbumAddedSpy.count(), 0); + QCOMPARE(musicDbTrackAddedSpy.count(), 0); + QCOMPARE(musicDbArtistRemovedSpy.count(), 0); + QCOMPARE(musicDbAlbumRemovedSpy.count(), 0); + QCOMPARE(musicDbTrackRemovedSpy.count(), 0); + QCOMPARE(musicDbAlbumModifiedSpy.count(), 0); + QCOMPARE(musicDbTrackModifiedSpy.count(), 0); + QCOMPARE(musicDbDatabaseErrorSpy.count(), 0); + } }; QTEST_GUILESS_MAIN(DatabaseInterfaceTests) diff --git a/src/databaseinterface.cpp b/src/databaseinterface.cpp --- a/src/databaseinterface.cpp +++ b/src/databaseinterface.cpp @@ -1145,21 +1145,24 @@ listTables = d->mTracksDatabase.tables(); } - checkDatabaseSchema(); listTables = d->mTracksDatabase.tables(); if (listTables.contains(QStringLiteral("DatabaseVersionV5")) && !listTables.contains(QStringLiteral("DatabaseVersionV9"))) { upgradeDatabaseV9(); upgradeDatabaseV11(); upgradeDatabaseV12(); + + checkDatabaseSchema(); } else if (listTables.contains(QStringLiteral("DatabaseVersionV9"))) { if (!listTables.contains(QStringLiteral("DatabaseVersionV11"))) { upgradeDatabaseV11(); } if (!listTables.contains(QStringLiteral("DatabaseVersionV12"))) { upgradeDatabaseV12(); } + + checkDatabaseSchema(); } else { createDatabaseV9(); upgradeDatabaseV11(); @@ -1485,7 +1488,6 @@ "`ArtistName` VARCHAR(55), " "`AlbumPath` VARCHAR(255) NOT NULL, " "`CoverFileName` VARCHAR(255) NOT NULL, " - "`AlbumInternalID` VARCHAR(55), " "UNIQUE (`Title`, `ArtistName`, `AlbumPath`), " "CONSTRAINT fk_artists FOREIGN KEY (`ArtistName`) REFERENCES `Artists`(`Name`) " "ON DELETE CASCADE)")); @@ -1505,8 +1507,7 @@ "album.`Title`, " "artist.`Name`, " "album.`AlbumPath`, " - "album.`CoverFileName`, " - "album.`AlbumInternalID` " + "album.`CoverFileName` " "FROM " "`Albums` album, " "`AlbumsArtists` albumArtistMapping, "