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:
Leonid Pershin
2026-07-25 20:12:04 +03:00
parent ed240ef73c
commit 4611f90d11
18 changed files with 2027 additions and 0 deletions
@@ -0,0 +1,59 @@
using TeleWave.Domain.Broadcast;
using Xunit;
namespace TeleWave.Domain.Tests.Broadcast;
public class ProgrammingOverrideTests
{
private static readonly DateTimeOffset Epoch = new(2026, 1, 1, 0, 0, 0, TimeSpan.Zero);
private static Channel NewChannel() => Channel.Create("c", "c", Epoch);
[Fact]
public void OneTime_Covers_OnlyInsideWindow()
{
var ovr = NewChannel()
.AddOverride(OverrideMode.Exclusive, Epoch.AddHours(1), Epoch.AddHours(3));
Assert.False(ovr.Covers(Epoch.AddMinutes(59)));
Assert.True(ovr.Covers(Epoch.AddHours(1)));
Assert.True(ovr.Covers(Epoch.AddHours(2)));
Assert.False(ovr.Covers(Epoch.AddHours(3))); // конец исключается
}
[Fact]
public void AddShow_AttachesWithWeight()
{
var ovr = NewChannel().AddOverride(OverrideMode.Boost, Epoch, Epoch.AddHours(1));
var showId = Guid.NewGuid();
var os = ovr.AddShow(showId, 4);
Assert.Equal(showId, os.ShowId);
Assert.Equal(4, os.Weight);
Assert.Single(ovr.Shows);
}
[Fact]
public void Weekly_Covers_MatchingDayAndMinuteWindow()
{
// Epoch = 2026-01-01 — четверг (DayOfWeek=4).
var day = (int)Epoch.UtcDateTime.DayOfWeek;
var ovr = NewChannel().AddWeeklyOverride(OverrideMode.Exclusive, day, 600, 720); // 10:0012:00
Assert.True(ovr.Covers(Epoch.AddMinutes(600))); // 10:00 того же дня
Assert.True(ovr.Covers(Epoch.AddMinutes(719))); // 11:59
Assert.False(ovr.Covers(Epoch.AddMinutes(720))); // 12:00 — конец исключается
Assert.False(ovr.Covers(Epoch.AddMinutes(599))); // 09:59
}
[Fact]
public void Weekly_Covers_NextWeekSameDay()
{
var day = (int)Epoch.UtcDateTime.DayOfWeek;
var ovr = NewChannel().AddWeeklyOverride(OverrideMode.Exclusive, day, 0, 1440);
Assert.True(ovr.Covers(Epoch.AddDays(7).AddHours(5)));
Assert.False(ovr.Covers(Epoch.AddDays(1).AddHours(5))); // другой день недели
}
}