Files
TeleWave/backend/tests/TeleWave.Domain.Tests/Broadcast/BumperTemplateTests.cs
T

116 lines
3.1 KiB
C#

using TeleWave.Domain.Broadcast;
using Xunit;
namespace TeleWave.Domain.Tests.Broadcast;
public class BumperTemplateTests
{
private static BumperTemplate NewTemplate() =>
Channel.Create("c", "c", DateTimeOffset.UnixEpoch).AddBumperTemplate("Block");
[Fact]
public void Create_HasDefaultsAndOneVariant()
{
var t = NewTemplate();
Assert.Equal(BumperTemplate.DefaultBackgroundColor, t.BackgroundColor);
Assert.Null(t.AudioExtension);
Assert.Null(t.BackgroundImageId);
Assert.Equal(0, t.Revision);
var v = Assert.Single(t.Variants);
Assert.Equal(BumperTrigger.OnShowChange, v.Trigger);
}
[Fact]
public void AddVariant_AppendsWithNextPosition()
{
var t = NewTemplate();
var v1 = t.AddVariant("Text 2");
Assert.Equal(1, v1.Position);
Assert.Equal(2, t.Variants.Count);
Assert.Equal(v1, t.FindVariant(v1.Id));
Assert.Null(t.FindVariant(Guid.NewGuid()));
}
[Fact]
public void RemoveVariant_CannotRemoveLast()
{
var t = NewTemplate();
var first = t.Variants[0];
Assert.False(t.RemoveVariant(first.Id)); // единственный — нельзя
var second = t.AddVariant("Text 2");
Assert.True(t.RemoveVariant(second.Id));
Assert.False(t.RemoveVariant(Guid.NewGuid()));
Assert.Single(t.Variants);
}
[Fact]
public void UpdateStyle_ChangesColorsAndName()
{
var t = NewTemplate();
t.UpdateStyle("New", "0x111111", "0x222222", "0x333333", "black");
Assert.Equal("New", t.Name);
Assert.Equal("0x111111", t.BackgroundColor);
Assert.Equal("0x333333", t.AccentColor);
Assert.Equal("black", t.TextColor);
}
[Fact]
public void SetAudio_BumpsRevision_AndStoresDuration()
{
var t = NewTemplate();
t.SetAudio(".mp3", 12.5);
Assert.Equal(".mp3", t.AudioExtension);
Assert.Equal(12.5, t.AudioDurationSeconds);
Assert.Equal(1, t.Revision);
}
[Fact]
public void SetAudio_NonPositiveDuration_StoresNull()
{
var t = NewTemplate();
t.SetAudio(".wav", 0);
Assert.Null(t.AudioDurationSeconds);
}
[Fact]
public void ClearAudio_ResetsAndBumpsRevisionOnceWhenPresent()
{
var t = NewTemplate();
t.SetAudio(".mp3", 5); // rev 1
t.ClearAudio(); // rev 2
Assert.Null(t.AudioExtension);
Assert.Equal(2, t.Revision);
t.ClearAudio(); // уже пусто — ревизия не двигается
Assert.Equal(2, t.Revision);
}
[Fact]
public void BackgroundImage_SetAndClear_BumpRevision()
{
var t = NewTemplate();
var img = Guid.NewGuid();
t.SetBackgroundImage(img); // rev 1
Assert.Equal(img, t.BackgroundImageId);
Assert.Equal(1, t.Revision);
t.ClearBackgroundImage(); // rev 2
Assert.Null(t.BackgroundImageId);
Assert.Equal(2, t.Revision);
t.ClearBackgroundImage(); // уже пусто
Assert.Equal(2, t.Revision);
}
}