83 lines
2.6 KiB
C#
83 lines
2.6 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using TeleWave.Application.Broadcast;
|
|
using TeleWave.Application.Broadcast.CreateChannel;
|
|
using TeleWave.Application.Broadcast.UpdateChannelSettings;
|
|
using TeleWave.Application.Tests.Support;
|
|
using TeleWave.Domain.Broadcast;
|
|
using TeleWave.Domain.Library;
|
|
using TeleWave.Domain.Media;
|
|
using Xunit;
|
|
|
|
namespace TeleWave.Application.Tests.Broadcast;
|
|
|
|
public class ChannelHandlersTests
|
|
{
|
|
private static readonly DateTimeOffset T0 = new(2026, 1, 1, 0, 0, 0, TimeSpan.Zero);
|
|
|
|
[Fact]
|
|
public async Task CreateChannel_Succeeds_AndRejectsDuplicateSlug()
|
|
{
|
|
var fixture = new TestDb();
|
|
await using var db = fixture.New();
|
|
|
|
var ok = await new CreateChannelCommandHandler(db).Handle(
|
|
new CreateChannelCommand("News", "news"),
|
|
CancellationToken.None
|
|
);
|
|
Assert.True(ok.IsSuccess);
|
|
await db.SaveChangesAsync(CancellationToken.None);
|
|
|
|
var dup = await new CreateChannelCommandHandler(db).Handle(
|
|
new CreateChannelCommand("Other", "news"),
|
|
CancellationToken.None
|
|
);
|
|
Assert.False(dup.IsSuccess);
|
|
Assert.Equal(ChannelErrors.DuplicateSlug, dup.Error);
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
public async Task UpdateChannelSettings_UpdatesBumperChances()
|
|
{
|
|
var fixture = new TestDb();
|
|
var channel = Channel.Create("c", "c", T0);
|
|
await using (var seed = fixture.New())
|
|
{
|
|
seed.Channels.Add(channel);
|
|
await seed.SaveChangesAsync(CancellationToken.None);
|
|
}
|
|
|
|
await using var db = fixture.New();
|
|
var result = await new UpdateChannelSettingsCommandHandler(db).Handle(
|
|
new UpdateChannelSettingsCommand(
|
|
channel.Id,
|
|
"c",
|
|
true,
|
|
true,
|
|
new BumperSettingsInput(
|
|
BumperFont.Sans,
|
|
5,
|
|
BumperSelection.WeightedRandom,
|
|
0.5,
|
|
0.2
|
|
),
|
|
null
|
|
),
|
|
CancellationToken.None
|
|
);
|
|
Assert.True(result.IsSuccess);
|
|
await db.SaveChangesAsync(CancellationToken.None);
|
|
|
|
await using var verify = fixture.New();
|
|
var stored = await verify.Channels.FindAsync(channel.Id);
|
|
Assert.Equal(0.5, stored!.BumperShowChangeChance);
|
|
Assert.Equal(0.2, stored.BumperEpisodeChangeChance);
|
|
Assert.Equal(BumperSelection.WeightedRandom, stored.BumperSelection);
|
|
}
|
|
|
|
|
|
|
|
}
|