Add project reference for TeleWave.Infrastructure: include TeleWave.Infrastructure.csproj in TeleWave.Application.Tests project to support additional testing capabilities.
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user