mirror of https://github.com/ErsatzTV/ErsatzTV.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.6 KiB
77 lines
2.6 KiB
using ErsatzTV.Core.Domain; |
|
using ErsatzTV.Core.Scheduling.YamlScheduling; |
|
using ErsatzTV.Core.Scheduling.YamlScheduling.Models; |
|
using NUnit.Framework; |
|
using Shouldly; |
|
|
|
namespace ErsatzTV.Core.Tests.Scheduling; |
|
|
|
public static class YamlPlayoutContextTests |
|
{ |
|
[TestFixture] |
|
public class ScheduleSwitching |
|
{ |
|
private static YamlPlayoutContext CreateContext() |
|
{ |
|
var definition = new YamlPlayoutDefinition |
|
{ |
|
Playout = [new YamlPlayoutInstruction()], |
|
Schedules = |
|
[ |
|
new YamlPlayoutScheduleItem |
|
{ |
|
Name = "Christmas", |
|
StartDate = "12-25", |
|
EndDate = "12-25", |
|
Playout = [new YamlPlayoutInstruction()] |
|
} |
|
] |
|
}; |
|
|
|
return new YamlPlayoutContext(new Playout(), definition, 1); |
|
} |
|
|
|
[Test] |
|
public void Switching_Should_Not_Leak_Graphics_Elements_Across_Lists() |
|
{ |
|
YamlPlayoutContext context = CreateContext(); |
|
|
|
// default playout turns a graphics element on |
|
context.SetGraphicsElement(1, null); |
|
context.GetGraphicsElements().ShouldContainKey(1); |
|
|
|
// crossing into the schedule should start with a clean ambient state |
|
context.SwitchToSchedule("Christmas"); |
|
context.GetGraphicsElements().ShouldNotContainKey(1); |
|
|
|
// the schedule can turn on the same element without throwing |
|
Should.NotThrow(() => context.SetGraphicsElement(1, null)); |
|
context.GetGraphicsElements().ShouldContainKey(1); |
|
} |
|
|
|
[Test] |
|
public void Returning_To_Default_Should_Restore_Its_Graphics_Elements() |
|
{ |
|
YamlPlayoutContext context = CreateContext(); |
|
|
|
context.SetGraphicsElement(1, "default-vars"); |
|
context.SwitchToSchedule("Christmas"); |
|
context.SetGraphicsElement(1, "christmas-vars"); |
|
|
|
// returning to the default playout restores its ambient state |
|
context.SwitchToSchedule(null); |
|
context.GetGraphicsElements().ShouldContainKey(1); |
|
context.GetGraphicsElements()[1].ShouldBe("default-vars"); |
|
} |
|
|
|
[Test] |
|
public void SetGraphicsElement_Should_Be_Idempotent() |
|
{ |
|
YamlPlayoutContext context = CreateContext(); |
|
|
|
context.SetGraphicsElement(1, "a"); |
|
Should.NotThrow(() => context.SetGraphicsElement(1, "b")); |
|
context.GetGraphicsElements()[1].ShouldBe("b"); |
|
} |
|
} |
|
}
|
|
|