Files
TeleWave/backend/tests/TeleWave.Domain.Tests/Media/MediaAssetTests.cs
T

80 lines
2.3 KiB
C#

using TeleWave.Domain.Media;
using Xunit;
namespace TeleWave.Domain.Tests.Media;
public class MediaAssetTests
{
[Fact]
public void Register_CreatesPendingAsset_WithNormalizedExtension()
{
var asset = MediaAsset.Register("Simpsons S05E01.MKV", ".MKV", MediaSource.Upload);
Assert.Equal(MediaAssetStatus.Pending, asset.Status);
Assert.Equal(".mkv", asset.OriginalExtension);
Assert.Equal("Simpsons S05E01.MKV", asset.OriginalFileName);
Assert.Equal(MediaSource.Upload, asset.Source);
Assert.NotEqual(Guid.Empty, asset.Id);
}
[Fact]
public void MarkProcessing_SetsProcessingAndClearsError()
{
var asset = MediaAsset.Register("a.mp4", ".mp4", MediaSource.Inbox);
asset.MarkFailed("boom");
asset.MarkProcessing();
Assert.Equal(MediaAssetStatus.Processing, asset.Status);
Assert.Null(asset.ErrorMessage);
}
[Fact]
public void MarkReady_StoresSegmentationMetadata()
{
var asset = MediaAsset.Register("a.mp4", ".mp4", MediaSource.Upload);
asset.MarkReady(
TimeSpan.FromSeconds(120),
segmentSeconds: 2,
segmentCount: 60,
width: 1920,
height: 1080,
videoCodec: "h264",
audioCodec: "aac",
relativePath: "assets/abc"
);
Assert.Equal(MediaAssetStatus.Ready, asset.Status);
Assert.Equal(TimeSpan.FromSeconds(120), asset.Duration);
Assert.Equal(2, asset.SegmentSeconds);
Assert.Equal(60, asset.SegmentCount);
Assert.Equal(1920, asset.Width);
Assert.Equal(1080, asset.Height);
Assert.Equal("assets/abc", asset.RelativePath);
Assert.Null(asset.ErrorMessage);
}
[Fact]
public void MarkFailed_StoresError()
{
var asset = MediaAsset.Register("a.mp4", ".mp4", MediaSource.Upload);
asset.MarkFailed("ffmpeg exited 1");
Assert.Equal(MediaAssetStatus.Failed, asset.Status);
Assert.Equal("ffmpeg exited 1", asset.ErrorMessage);
}
[Fact]
public void ResetToPending_FromProcessing_ReturnsToQueue()
{
var asset = MediaAsset.Register("a.mp4", ".mp4", MediaSource.Upload);
asset.MarkProcessing();
asset.ResetToPending();
Assert.Equal(MediaAssetStatus.Pending, asset.Status);
}
}