Fixed regression in album grouping, ref #616

This commit is contained in:
emeric
2025-02-22 22:05:25 +01:00
parent d19d6f04b2
commit 59f7bec8dd
5 changed files with 49 additions and 7 deletions
+30
View File
@@ -1386,4 +1386,34 @@ namespace lms::db::tests
EXPECT_EQ(releases.results[0]->getId(), release->getId());
}
}
TEST_F(DatabaseFixture, Release_sortName)
{
ScopedRelease release1{ session, "MyRelease1" };
ScopedRelease release2{ session, "MyRelease2" };
{
auto transaction{ session.createWriteTransaction() };
release1.get().modify()->setSortName("BB");
release2.get().modify()->setSortName("AA");
}
{
auto transaction{ session.createReadTransaction() };
const auto releases{ Release::find(session, Release::FindParameters{}.setSortMethod(ReleaseSortMethod::Name)) };
ASSERT_EQ(releases.results.size(), 2);
EXPECT_EQ(releases.results[0]->getId(), release1->getId());
EXPECT_EQ(releases.results[1]->getId(), release2->getId());
}
{
auto transaction{ session.createReadTransaction() };
const auto releases{ Release::find(session, Release::FindParameters{}.setSortMethod(ReleaseSortMethod::SortName)) };
ASSERT_EQ(releases.results.size(), 2);
EXPECT_EQ(releases.results[0]->getId(), release2->getId());
EXPECT_EQ(releases.results[1]->getId(), release1->getId());
}
}
} // namespace lms::db::tests
+1 -1
View File
@@ -511,7 +511,7 @@ namespace lms::metadata
release.emplace();
release->name = std::move(*releaseName);
release->sortName = getTagValueAs<std::string>(tagReader, TagType::AlbumSortOrder).value_or("");
release->sortName = getTagValueAs<std::string>(tagReader, TagType::AlbumSortOrder).value_or(release->name);
release->artists = getArtists(tagReader, { TagType::AlbumArtists, TagType::AlbumArtist }, { TagType::AlbumArtistsSortOrder, TagType::AlbumArtistSortOrder }, { TagType::MusicBrainzReleaseArtistID }, _artistTagDelimiters, _defaultTagDelimiters);
release->artistDisplayName = computeArtistDisplayName(release->artists, getTagValueAs<std::string>(tagReader, TagType::AlbumArtist), _artistTagDelimiters);
release->mbid = getTagValueAs<core::UUID>(tagReader, TagType::MusicBrainzReleaseID);
+15
View File
@@ -716,6 +716,21 @@ namespace lms::metadata
EXPECT_EQ(track->composerArtists[0].mbid.value(), core::UUID::fromString("6643f584-5edc-45ce-927d-0a4ab25c2673"));
}
TEST(Parser, release_sortNameFallback)
{
const TestTagReader testTags{
{
{ TagType::Album, { "MyAlbum" } },
// No AlbumSortOrder
}
};
std::unique_ptr<Track> track{ Parser{}.parse(testTags) };
ASSERT_TRUE(track->medium.has_value());
ASSERT_TRUE(track->medium->release.has_value());
EXPECT_EQ(track->medium->release->sortName, "MyAlbum");
}
TEST(Parser, advisory)
{
auto doTest = [](std::string_view value, std::optional<Track::Advisory> expectedValue) {
@@ -163,11 +163,8 @@ namespace lms::scanner
{
if (release->getName() != releaseInfo.name)
release.modify()->setName(releaseInfo.name);
{
std::string_view sortName{ !releaseInfo.sortName.empty() ? releaseInfo.sortName : releaseInfo.name };
if (release->getSortName() != sortName)
release.modify()->setSortName(sortName);
}
if (release->getSortName() != releaseInfo.sortName)
release.modify()->setSortName(releaseInfo.sortName);
if (release->getGroupMBID() != releaseInfo.groupMBID)
release.modify()->setGroupMBID(releaseInfo.groupMBID);
if (release->getTotalDisc() != releaseInfo.mediumCount)
+1 -1
View File
@@ -78,7 +78,7 @@ namespace lms::metadata
std::ostream& operator<<(std::ostream& os, const Release& release)
{
os << release.name;
if (!release.sortName.empty())
if (release.sortName != release.name)
os << " '" << release.sortName << "'";
os << std::endl;