Files
TeleWave/backend/tests/TeleWave.Application.Tests/Validators/ValidatorTests.cs
T

143 lines
4.5 KiB
C#

using TeleWave.Application.Admin.Users.CreateUser;
using TeleWave.Application.Admin.Users.ResetPassword;
using TeleWave.Application.Broadcast;
using TeleWave.Application.Broadcast.Bumpers;
using TeleWave.Application.Broadcast.CreateOverride;
using TeleWave.Application.Broadcast.UpdateChannelSettings;
using TeleWave.Application.Broadcast.UpdateChannelShow;
using TeleWave.Domain.Broadcast;
using Xunit;
namespace TeleWave.Application.Tests.Validators;
public class ValidatorTests
{
[Fact]
public void UpdateChannelShow_RejectsBadWeightMultiplierAndWindows()
{
var v = new UpdateChannelShowCommandValidator();
var good = new UpdateChannelShowCommand(
Guid.NewGuid(),
Guid.NewGuid(),
5,
BlockMode.Count,
3,
true,
4,
[new HourWindowInput(18, 23)]
);
Assert.True(v.Validate(good).IsValid);
var badMultiplier = good with { PreferredWeightMultiplier = 0 };
Assert.False(v.Validate(badMultiplier).IsValid);
var badWindow = good with { PreferredHours = [new HourWindowInput(23, 20)] };
Assert.False(v.Validate(badWindow).IsValid);
var badWeight = good with { Weight = 0 };
Assert.False(v.Validate(badWeight).IsValid);
}
[Fact]
public void UpdateBumperTextVariant_ChecksLengthsAndWeight()
{
var v = new UpdateBumperTextVariantCommandValidator();
var good = new UpdateBumperTextVariantCommand(
Guid.NewGuid(),
Guid.NewGuid(),
Guid.NewGuid(),
"Name",
BumperTextKind.NowNext,
"NOW",
"NEXT",
"l1",
"l2",
BumperTrigger.Both,
3
);
Assert.True(v.Validate(good).IsValid);
Assert.False(v.Validate(good with { Name = "" }).IsValid);
Assert.False(v.Validate(good with { Weight = -1 }).IsValid);
Assert.False(v.Validate(good with { Line1 = new string('x', 121) }).IsValid);
}
[Fact]
public void UpdateChannelSettings_ChecksRanges()
{
var v = new UpdateChannelSettingsCommandValidator();
var bumper = new BumperSettingsInput(
BumperFont.Sans,
10,
BumperSelection.Rotation,
0.5,
0.5
);
var good = new UpdateChannelSettingsCommand(
Guid.NewGuid(),
"Name",
true,
AdInsertion.BetweenBlocks,
2,
true,
bumper,
null
);
Assert.True(v.Validate(good).IsValid);
Assert.False(v.Validate(good with { Name = "" }).IsValid);
Assert.False(v.Validate(good with { AdsPerBreak = 99 }).IsValid);
Assert.False(
v.Validate(good with { Bumper = bumper with { ShowChangeChance = 2 } }).IsValid
);
}
[Fact]
public void CreateOverride_RequiresShows_WithValidWeights()
{
var v = new CreateProgrammingOverrideCommandValidator();
var good = new CreateProgrammingOverrideCommand(
Guid.NewGuid(),
OverrideMode.Boost,
OverrideRecurrence.OneTime,
DateTimeOffset.UtcNow,
DateTimeOffset.UtcNow.AddHours(1),
null,
null,
null,
[new OverrideShowInput(Guid.NewGuid(), 3)]
);
Assert.True(v.Validate(good).IsValid);
Assert.False(v.Validate(good with { Shows = [] }).IsValid);
Assert.False(
v.Validate(good with { Shows = [new OverrideShowInput(Guid.NewGuid(), 0)] }).IsValid
);
}
[Fact]
public void ResetUserPassword_RequiresMinLength()
{
var v = new ResetUserPasswordCommandValidator();
Assert.True(v.Validate(new ResetUserPasswordCommand(Guid.NewGuid(), "Password1")).IsValid);
Assert.False(v.Validate(new ResetUserPasswordCommand(Guid.NewGuid(), "short")).IsValid);
Assert.False(v.Validate(new ResetUserPasswordCommand(Guid.Empty, "Password1")).IsValid);
}
[Fact]
public void CreateUser_ChecksNameAndPassword()
{
var v = new CreateUserCommandValidator();
Assert.True(v.Validate(new CreateUserCommand("bob", "Password1", Guid.NewGuid())).IsValid);
Assert.False(v.Validate(new CreateUserCommand("ab", "Password1", Guid.NewGuid())).IsValid);
Assert.False(v.Validate(new CreateUserCommand("bob", "short", Guid.NewGuid())).IsValid);
Assert.False(v.Validate(new CreateUserCommand("bob", "Password1", Guid.Empty)).IsValid);
}
}