Enhance user and media management with sorting and statistics: add sorting options to user and media listing endpoints, implement media statistics retrieval, and update frontend components for sorting and displaying media processing times. Refactor related query handlers and API types to support new features.
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using TeleWave.Application.Media.Stats;
|
||||
using TeleWave.Application.Tests.Support;
|
||||
using TeleWave.Domain.Media;
|
||||
using Xunit;
|
||||
|
||||
namespace TeleWave.Application.Tests.Media;
|
||||
|
||||
public class MediaStatsTests
|
||||
{
|
||||
private static MediaAsset Pending(string name) =>
|
||||
MediaAsset.Register(name, ".mkv", MediaSource.Upload);
|
||||
|
||||
private static MediaAsset Processing(string name)
|
||||
{
|
||||
var a = Pending(name);
|
||||
a.MarkProcessing();
|
||||
return a;
|
||||
}
|
||||
|
||||
private static MediaAsset Ready(string name)
|
||||
{
|
||||
var a = Pending(name);
|
||||
a.MarkProcessing();
|
||||
a.MarkReady(TimeSpan.FromMinutes(20), 2, 600, 1920, 1080, "h264", "aac", "assets/x");
|
||||
return a;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Stats_CountsQueuedAndProcessing_AndAveragesReady_ExcludingGenerated()
|
||||
{
|
||||
var fixture = new TestDb();
|
||||
await using (var seed = fixture.New())
|
||||
{
|
||||
seed.MediaAssets.AddRange(
|
||||
Pending("a.mkv"),
|
||||
Pending("b.mkv"),
|
||||
Processing("c.mkv"),
|
||||
Ready("d.mkv"),
|
||||
MediaAsset.RegisterGenerated("Заставка") // Generated — не входит в статистику
|
||||
);
|
||||
await seed.SaveChangesAsync(CancellationToken.None);
|
||||
}
|
||||
|
||||
await using var db = fixture.New();
|
||||
var stats = await new GetMediaStatsQueryHandler(db).Handle(
|
||||
new GetMediaStatsQuery(),
|
||||
CancellationToken.None
|
||||
);
|
||||
|
||||
Assert.Equal(2, stats.Queued); // два Pending (Generated исключён)
|
||||
Assert.Equal(1, stats.Processing);
|
||||
Assert.NotNull(stats.AverageProcessingSeconds);
|
||||
Assert.True(stats.AverageProcessingSeconds >= 0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user