fix: exclude live tracks under soft-deleted releases from home stats cut/mix figures
This commit is contained in:
@@ -149,4 +149,34 @@ public class HomeStatsQueryTests
|
||||
Assert.That(stats.CutReleaseTypeCounts.Single(c => c.ReleaseType == ReleaseType.Album).Count, Is.EqualTo(1));
|
||||
Assert.That(stats.MixRuntimeSeconds, Is.EqualTo(0d), "the only mix track is soft-deleted");
|
||||
}
|
||||
|
||||
// A live track under a directly-deleted release must be excluded from the track-based figures.
|
||||
// SoftDeleteReleaseAsync does not cascade to child tracks, so without the !t.Release.IsDeleted
|
||||
// guard the track-count and runtime figures are internally inconsistent with the release-level ones.
|
||||
[Test]
|
||||
public async Task GetHomeStatsAsync_ExcludesLiveTracksUnderSoftDeletedRelease()
|
||||
{
|
||||
var liveCut = Release("Live Cut", ReleaseMedium.Cut, ReleaseType.Album);
|
||||
var deletedCut = Release("Dead Cut", ReleaseMedium.Cut, ReleaseType.Album);
|
||||
deletedCut.IsDeleted = true;
|
||||
var deletedMix = Release("Dead Mix", ReleaseMedium.Mix);
|
||||
deletedMix.IsDeleted = true;
|
||||
|
||||
// Both tracks are themselves live — only their parent release is soft-deleted.
|
||||
var liveTrackUnderDeletedCut = Track(deletedCut);
|
||||
var liveTrackUnderDeletedMix = Track(deletedMix, duration: 900d);
|
||||
|
||||
await SeedAsync(
|
||||
new[] { liveCut, deletedCut, deletedMix },
|
||||
new[] { Track(liveCut), liveTrackUnderDeletedCut, liveTrackUnderDeletedMix });
|
||||
|
||||
var stats = await CreateRepository().GetHomeStatsAsync();
|
||||
|
||||
Assert.That(stats.CutTrackCount, Is.EqualTo(1),
|
||||
"live track under deleted Cut release must not inflate CutTrackCount");
|
||||
Assert.That(stats.MixReleaseCount, Is.EqualTo(0),
|
||||
"deleted Mix release must not count");
|
||||
Assert.That(stats.MixRuntimeSeconds, Is.EqualTo(0d),
|
||||
"live track under deleted Mix release must not inflate MixRuntimeSeconds");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user