Scan tracker: now handle releases and artists
This commit is contained in:
@@ -77,6 +77,96 @@ namespace lms::db::tests
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(DatabaseFixture, Artist_findByRangedIdBased)
|
||||
{
|
||||
ScopedTrack track1{ session, "MyTrackFile1" };
|
||||
ScopedTrack track2{ session, "MyTrackFile2" };
|
||||
ScopedTrack track3{ session, "MyTrackFile3" };
|
||||
ScopedArtist artist1{ session, "MyArtist1" };
|
||||
ScopedArtist artist2{ session, "MyArtist2" };
|
||||
ScopedArtist artist3{ session, "MyArtist3" };
|
||||
ScopedMediaLibrary library{ session };
|
||||
ScopedMediaLibrary otherLibrary{ session };
|
||||
|
||||
{
|
||||
auto transaction{ session.createWriteTransaction() };
|
||||
track2.get().modify()->setMediaLibrary(library.get());
|
||||
TrackArtistLink::create(session, track1.get(), artist1.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, track2.get(), artist2.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, track3.get(), artist3.get(), TrackArtistLinkType::Artist);
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
|
||||
ArtistId lastRetrievedId;
|
||||
std::vector<Artist::pointer> visitedArtists;
|
||||
Artist::find(session, lastRetrievedId, 10, [&](const Artist::pointer& artist)
|
||||
{
|
||||
visitedArtists.push_back(artist);
|
||||
});
|
||||
ASSERT_EQ(visitedArtists.size(), 3);
|
||||
EXPECT_EQ(visitedArtists[0]->getId(), artist1.getId());
|
||||
EXPECT_EQ(visitedArtists[1]->getId(), artist2.getId());
|
||||
EXPECT_EQ(visitedArtists[2]->getId(), artist3.getId());
|
||||
EXPECT_EQ(lastRetrievedId, artist3.getId());
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
|
||||
ArtistId lastRetrievedId{ artist1.getId() };
|
||||
std::vector<Artist::pointer> visitedArtists;
|
||||
Artist::find(session, lastRetrievedId, 1, [&](const Artist::pointer& artist)
|
||||
{
|
||||
visitedArtists.push_back(artist);
|
||||
});
|
||||
ASSERT_EQ(visitedArtists.size(), 1);
|
||||
EXPECT_EQ(visitedArtists[0]->getId(), artist2.getId());
|
||||
EXPECT_EQ(lastRetrievedId, artist2.getId());
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
|
||||
ArtistId lastRetrievedId{ artist1.getId() };
|
||||
std::vector<Artist::pointer> visitedArtists;
|
||||
Artist::find(session, lastRetrievedId, 0, [&](const Artist::pointer& artist)
|
||||
{
|
||||
visitedArtists.push_back(artist);
|
||||
});
|
||||
ASSERT_EQ(visitedArtists.size(), 0);
|
||||
EXPECT_EQ(lastRetrievedId, artist1.getId());
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
|
||||
ArtistId lastRetrievedId;
|
||||
std::vector<Artist::pointer> visitedArtists;
|
||||
Artist::find(session, lastRetrievedId, 10, [&](const Artist::pointer& artist)
|
||||
{
|
||||
visitedArtists.push_back(artist);
|
||||
}, otherLibrary.getId());
|
||||
ASSERT_EQ(visitedArtists.size(), 0);
|
||||
EXPECT_EQ(lastRetrievedId, ArtistId{});
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
|
||||
ArtistId lastRetrievedId;
|
||||
std::vector<Artist::pointer> visitedArtists;
|
||||
Artist::find(session, lastRetrievedId, 10, [&](const Artist::pointer& artist)
|
||||
{
|
||||
visitedArtists.push_back(artist);
|
||||
}, library.getId());
|
||||
ASSERT_EQ(visitedArtists.size(), 1);
|
||||
EXPECT_EQ(visitedArtists[0]->getId(), artist2.getId());
|
||||
EXPECT_EQ(lastRetrievedId, artist2.getId());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(DatabaseFixture, MultipleArtists)
|
||||
{
|
||||
{
|
||||
@@ -409,46 +499,46 @@ namespace lms::db::tests
|
||||
EXPECT_EQ(artists.front()->getId(), artist1.getId());
|
||||
EXPECT_EQ(Artist::find(session, R"(MyArtistFoo)").size(), 0);
|
||||
}
|
||||
{
|
||||
const auto artists{ Artist::find(session, R"(%MyArtist)") };
|
||||
ASSERT_TRUE(artists.size() == 1);
|
||||
EXPECT_EQ(artists.front()->getId(), artist2.getId());
|
||||
{
|
||||
const auto artists{ Artist::find(session, R"(%MyArtist)") };
|
||||
ASSERT_TRUE(artists.size() == 1);
|
||||
EXPECT_EQ(artists.front()->getId(), artist2.getId());
|
||||
EXPECT_EQ(Artist::find(session, R"(FooMyArtist)").size(), 0);
|
||||
}
|
||||
{
|
||||
const auto artists{ Artist::find(session, R"(%_MyArtist)") };
|
||||
ASSERT_TRUE(artists.size() == 1);
|
||||
ASSERT_EQ(artists.front()->getId(), artist3.getId());
|
||||
EXPECT_EQ(Artist::find(session, R"(%CMyArtist)").size(), 0);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
const auto artists{ Artist::find(session, R"(%_MyArtist)") };
|
||||
ASSERT_TRUE(artists.size() == 1);
|
||||
ASSERT_EQ(artists.front()->getId(), artist3.getId());
|
||||
EXPECT_EQ(Artist::find(session, R"(%CMyArtist)").size(), 0);
|
||||
}
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
{
|
||||
const auto artists{ Artist::findIds(session, Artist::FindParameters {}.setKeywords({"MyArtist"})) };
|
||||
EXPECT_EQ(artists.results.size(), 6);
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
{
|
||||
const auto artists{ Artist::findIds(session, Artist::FindParameters {}.setKeywords({"MyArtist"})) };
|
||||
EXPECT_EQ(artists.results.size(), 6);
|
||||
}
|
||||
|
||||
{
|
||||
const auto artists{ Artist::findIds(session, Artist::FindParameters {}.setKeywords({"MyArtist%"}).setSortMethod(ArtistSortMethod::ByName)) };
|
||||
ASSERT_EQ(artists.results.size(), 2);
|
||||
const auto artists{ Artist::findIds(session, Artist::FindParameters {}.setKeywords({"MyArtist%"}).setSortMethod(ArtistSortMethod::ByName)) };
|
||||
ASSERT_EQ(artists.results.size(), 2);
|
||||
EXPECT_EQ(artists.results[0], artist1.getId());
|
||||
EXPECT_EQ(artists.results[1], artist4.getId());
|
||||
}
|
||||
EXPECT_EQ(artists.results[1], artist4.getId());
|
||||
}
|
||||
|
||||
{
|
||||
const auto artists{ Artist::findIds(session, Artist::FindParameters {}.setKeywords({"%MyArtist"}).setSortMethod(ArtistSortMethod::ByName)) };
|
||||
{
|
||||
const auto artists{ Artist::findIds(session, Artist::FindParameters {}.setKeywords({"%MyArtist"}).setSortMethod(ArtistSortMethod::ByName)) };
|
||||
ASSERT_EQ(artists.results.size(), 2);
|
||||
EXPECT_EQ(artists.results[0], artist2.getId());
|
||||
EXPECT_EQ(artists.results[1], artist5.getId());
|
||||
EXPECT_EQ(artists.results[1], artist5.getId());
|
||||
}
|
||||
|
||||
{
|
||||
const auto artists{ Artist::findIds(session, Artist::FindParameters {}.setKeywords({"_MyArtist"}).setSortMethod(ArtistSortMethod::ByName)) };
|
||||
ASSERT_EQ(artists.results.size(), 1);
|
||||
EXPECT_EQ(artists.results[0], artist3.getId());
|
||||
}
|
||||
ASSERT_EQ(artists.results.size(), 1);
|
||||
EXPECT_EQ(artists.results[0], artist3.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user