Files
TeleWave/backend/tests/TeleWave.Application.Tests/Media/MediaStatsTests.cs
T

58 lines
1.7 KiB
C#

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(
new MediaReadyInfo(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);
}
}