Sorting by recently added now uses the 'added' info instead of the 'last write time' of the underlying file, ref #571
This commit is contained in:
@@ -669,7 +669,8 @@ namespace lms::db::tests
|
||||
TEST_F(DatabaseFixture, Artist_findByRelease)
|
||||
{
|
||||
ScopedArtist artist{ session, "artist" };
|
||||
ScopedTrack track{ session };
|
||||
ScopedTrack track1{ session };
|
||||
ScopedTrack track2{ session };
|
||||
ScopedRelease release{ session, "MyRelease" };
|
||||
|
||||
{
|
||||
@@ -680,7 +681,8 @@ namespace lms::db::tests
|
||||
|
||||
{
|
||||
auto transaction{ session.createWriteTransaction() };
|
||||
TrackArtistLink::create(session, track.get(), artist.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, track1.get(), artist.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, track2.get(), artist.get(), TrackArtistLinkType::Artist);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -691,7 +693,8 @@ namespace lms::db::tests
|
||||
|
||||
{
|
||||
auto transaction{ session.createWriteTransaction() };
|
||||
track.get().modify()->setRelease(release.get());
|
||||
track1.get().modify()->setRelease(release.get());
|
||||
track2.get().modify()->setRelease(release.get());
|
||||
}
|
||||
|
||||
{
|
||||
@@ -700,6 +703,12 @@ namespace lms::db::tests
|
||||
ASSERT_EQ(artists.results.size(), 1);
|
||||
EXPECT_EQ(artists.results.front(), artist.getId());
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
const std::size_t count{ Release::getCount(session, Release::FindParameters{}.setArtist(artist.getId())) };
|
||||
EXPECT_EQ(count, 1);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(DatabaseFixture, Artist_image)
|
||||
@@ -725,4 +734,84 @@ namespace lms::db::tests
|
||||
EXPECT_EQ(artistImage->getId(), image.getId());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(DatabaseFixture, Artist_sortDateAdded)
|
||||
{
|
||||
ScopedArtist artistA{ session, "artistA" };
|
||||
ScopedArtist artistB{ session, "artistB" };
|
||||
ScopedArtist artistC{ session, "artistC" };
|
||||
ScopedArtist artistD{ session, "artistD" };
|
||||
|
||||
ScopedTrack trackA1{ session };
|
||||
ScopedTrack trackB1{ session };
|
||||
ScopedTrack trackC1{ session };
|
||||
ScopedTrack trackD1{ session };
|
||||
|
||||
ScopedTrack trackA2{ session };
|
||||
|
||||
{
|
||||
auto transaction{ session.createWriteTransaction() };
|
||||
trackA1.get().modify()->setAddedTime(core::PartialDateTime{ 2021, 1, 2 });
|
||||
trackB1.get().modify()->setAddedTime(core::PartialDateTime{ 2021, 1, 1 });
|
||||
trackD1.get().modify()->setAddedTime(core::PartialDateTime{ 2021, 1, 2, 15, 36, 24 });
|
||||
trackD1.get().modify()->setAddedTime(core::PartialDateTime{ 2021, 1, 3 });
|
||||
trackA2.get().modify()->setAddedTime(core::PartialDateTime{ 2021, 1, 4 });
|
||||
|
||||
TrackArtistLink::create(session, trackA1.get(), artistA.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, trackA2.get(), artistA.get(), TrackArtistLinkType::Producer);
|
||||
TrackArtistLink::create(session, trackB1.get(), artistB.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, trackC1.get(), artistC.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, trackD1.get(), artistD.get(), TrackArtistLinkType::Artist);
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
const auto artists{ Artist::findIds(session, Artist::FindParameters{}.setSortMethod(ArtistSortMethod::AddedDesc)) };
|
||||
ASSERT_EQ(artists.results.size(), 4);
|
||||
EXPECT_EQ(artists.results[0], artistA.getId());
|
||||
EXPECT_EQ(artists.results[1], artistD.getId());
|
||||
EXPECT_EQ(artists.results[2], artistB.getId());
|
||||
EXPECT_EQ(artists.results[3], artistC.getId());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(DatabaseFixture, Artist_sortLastWritten)
|
||||
{
|
||||
ScopedArtist artistA{ session, "artistA" };
|
||||
ScopedArtist artistB{ session, "artistB" };
|
||||
ScopedArtist artistC{ session, "artistC" };
|
||||
ScopedArtist artistD{ session, "artistD" };
|
||||
|
||||
ScopedTrack trackA1{ session };
|
||||
ScopedTrack trackB1{ session };
|
||||
ScopedTrack trackC1{ session };
|
||||
ScopedTrack trackD1{ session };
|
||||
|
||||
ScopedTrack trackA2{ session };
|
||||
|
||||
{
|
||||
auto transaction{ session.createWriteTransaction() };
|
||||
trackA1.get().modify()->setLastWriteTime(Wt::WDateTime{ Wt::WDate{ 2021, 1, 2 } });
|
||||
trackB1.get().modify()->setLastWriteTime(Wt::WDateTime{ Wt::WDate{ 2021, 1, 1 } });
|
||||
trackD1.get().modify()->setLastWriteTime(Wt::WDateTime{ Wt::WDate{ 2021, 1, 2 }, Wt::WTime{ 15, 36, 24 } });
|
||||
trackD1.get().modify()->setLastWriteTime(Wt::WDateTime{ Wt::WDate{ 2021, 1, 3 } });
|
||||
trackA2.get().modify()->setLastWriteTime(Wt::WDateTime{ Wt::WDate{ 2021, 1, 4 } });
|
||||
|
||||
TrackArtistLink::create(session, trackA1.get(), artistA.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, trackA2.get(), artistA.get(), TrackArtistLinkType::Producer);
|
||||
TrackArtistLink::create(session, trackB1.get(), artistB.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, trackC1.get(), artistC.get(), TrackArtistLinkType::Artist);
|
||||
TrackArtistLink::create(session, trackD1.get(), artistD.get(), TrackArtistLinkType::Artist);
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
const auto artists{ Artist::findIds(session, Artist::FindParameters{}.setSortMethod(ArtistSortMethod::LastWrittenDesc)) };
|
||||
ASSERT_EQ(artists.results.size(), 4);
|
||||
EXPECT_EQ(artists.results[0], artistA.getId());
|
||||
EXPECT_EQ(artists.results[1], artistD.getId());
|
||||
EXPECT_EQ(artists.results[2], artistB.getId());
|
||||
EXPECT_EQ(artists.results[3], artistC.getId());
|
||||
}
|
||||
}
|
||||
} // namespace lms::db::tests
|
||||
|
||||
Reference in New Issue
Block a user