Added playlist import (and sync)from m3u files, ref #391

This commit is contained in:
emeric
2024-12-18 14:15:25 +01:00
parent ec20c9bfa6
commit 3661eaccb6
95 changed files with 3439 additions and 1634 deletions
+37 -18
View File
@@ -25,13 +25,12 @@ namespace lms::db::tests
{
TEST_F(DatabaseFixture, SingleTrackList)
{
ScopedUser user{ session, "MyUser" };
{
auto transaction{ session.createReadTransaction() };
EXPECT_EQ(TrackList::getCount(session), 0);
}
ScopedTrackList trackList{ session, "MytrackList", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList{ session, "MytrackList", TrackListType::PlayList };
{
auto transaction{ session.createReadTransaction() };
@@ -41,9 +40,8 @@ namespace lms::db::tests
TEST_F(DatabaseFixture, SingleTrackListSingleTrack)
{
ScopedUser user{ session, "MyUser" };
ScopedTrackList trackList1{ session, "MyTrackList1", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList2{ session, "MyTrackList2", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList1{ session, "MyTrackList1", TrackListType::PlayList };
ScopedTrackList trackList2{ session, "MyTrackList2", TrackListType::PlayList };
ScopedTrack track{ session };
{
@@ -76,9 +74,8 @@ namespace lms::db::tests
TEST_F(DatabaseFixture, TrackList_SortMethod)
{
ScopedUser user{ session, "MyUser" };
ScopedTrackList trackList2{ session, "MyTrackList2", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList1{ session, "MyTrackList1", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList2{ session, "MyTrackList2", TrackListType::PlayList };
ScopedTrackList trackList1{ session, "MyTrackList1", TrackListType::PlayList };
ScopedTrack track{ session };
{
@@ -125,8 +122,7 @@ namespace lms::db::tests
TEST_F(DatabaseFixture, SingleTrackListMultipleTrack)
{
ScopedUser user{ session, "MyUser" };
ScopedTrackList trackList{ session, "MytrackList", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList{ session, "MytrackList", TrackListType::PlayList };
std::list<ScopedTrack> tracks;
for (std::size_t i{}; i < 10; ++i)
@@ -153,9 +149,8 @@ namespace lms::db::tests
TEST_F(DatabaseFixture, TrackList_MediaLibrary)
{
ScopedUser user{ session, "MyUser" };
ScopedTrackList trackList1{ session, "MytrackList1", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList2{ session, "MytrackList2", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList1{ session, "MytrackList1", TrackListType::PlayList };
ScopedTrackList trackList2{ session, "MytrackList2", TrackListType::PlayList };
ScopedTrack track1{ session };
ScopedTrack track2{ session };
ScopedMediaLibrary library{ session, "MyLibrary", "/root" };
@@ -191,9 +186,8 @@ namespace lms::db::tests
TEST_F(DatabaseFixture, SingleTrackListSingleTrackWithCluster)
{
ScopedUser user{ session, "MyUser" };
ScopedTrackList trackList1{ session, "MyTrackList1", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList2{ session, "MyTrackList2", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList1{ session, "MyTrackList1", TrackListType::PlayList };
ScopedTrackList trackList2{ session, "MyTrackList2", TrackListType::PlayList };
ScopedClusterType clusterType{ session, "MyClusterType" };
ScopedCluster cluster{ session, clusterType.lockAndGet(), "MyCluster" };
ScopedTrack track{ session };
@@ -223,8 +217,7 @@ namespace lms::db::tests
TEST_F(DatabaseFixture, SingleTrackList_getEntries)
{
ScopedUser user{ session, "MyUser" };
ScopedTrackList trackList{ session, "MyTrackList", TrackListType::Playlist, false, user.lockAndGet() };
ScopedTrackList trackList{ session, "MyTrackList", TrackListType::PlayList };
ScopedTrack track1{ session };
ScopedTrack track2{ session };
@@ -260,4 +253,30 @@ namespace lms::db::tests
EXPECT_EQ(entries.results[0]->getTrack()->getId(), track2.getId());
}
}
TEST_F(DatabaseFixture, SingleTrackList_visitEntries)
{
ScopedTrackList trackList{ session, "MyTrackList", TrackListType::PlayList };
ScopedTrack track1{ session };
ScopedTrack track2{ session };
{
auto transaction{ session.createWriteTransaction() };
session.create<TrackListEntry>(track1.get(), trackList.get());
session.create<TrackListEntry>(track2.get(), trackList.get());
}
{
auto transaction{ session.createReadTransaction() };
std::vector<TrackId> visitedTrackIds;
TrackListEntry::find(session, TrackListEntry::FindParameters{}.setTrackList(trackList.getId()), [&](const TrackListEntry::pointer& entry) {
visitedTrackIds.push_back(entry->getTrackId());
});
ASSERT_EQ(visitedTrackIds.size(), 2);
EXPECT_EQ(visitedTrackIds[0], track1.getId());
EXPECT_EQ(visitedTrackIds[1], track2.getId());
}
}
} // namespace lms::db::tests