67 lines
1.9 KiB
C#
67 lines
1.9 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);
|
|
}
|
|
}
|