@ -550,6 +550,140 @@ public class PlayoutBuilderTests
@@ -550,6 +550,140 @@ public class PlayoutBuilderTests
result . Items [ 4 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
}
[Test]
public async Task FloodContent_Should_FloodAroundFixedContent_One_Multiple_Days ( )
{
var floodCollection = new Collection
{
Id = 1 ,
Name = "Flood Items" ,
MediaItems = new List < MediaItem >
{
TestMovie ( 1 , TimeSpan . FromHours ( 1 ) , new DateTime ( 2 0 2 0 , 1 , 1 ) ) ,
TestMovie ( 2 , TimeSpan . FromHours ( 1 ) , new DateTime ( 2 0 2 0 , 2 , 1 ) )
}
} ;
var fixedCollection = new Collection
{
Id = 2 ,
Name = "Fixed Items" ,
MediaItems = new List < MediaItem >
{
TestMovie ( 3 , TimeSpan . FromHours ( 2 ) , new DateTime ( 2 0 2 0 , 1 , 1 ) )
}
} ;
var fakeRepository = new FakeMediaCollectionRepository (
Map (
( floodCollection . Id , floodCollection . MediaItems . ToList ( ) ) ,
( fixedCollection . Id , fixedCollection . MediaItems . ToList ( ) ) ) ) ;
var items = new List < ProgramScheduleItem >
{
new ProgramScheduleItemFlood
{
Index = 1 ,
Collection = floodCollection ,
CollectionId = floodCollection . Id ,
StartTime = null ,
PlaybackOrder = PlaybackOrder . Chronological
} ,
new ProgramScheduleItemOne
{
Index = 2 ,
Collection = fixedCollection ,
CollectionId = fixedCollection . Id ,
StartTime = TimeSpan . FromHours ( 3 ) ,
PlaybackOrder = PlaybackOrder . Chronological
}
} ;
var playout = new Playout
{
ProgramSchedule = new ProgramSchedule
{
Items = items
} ,
Channel = new Channel ( Guid . Empty ) { Id = 1 , Name = "Test Channel" } ,
ProgramScheduleAnchors = new List < PlayoutProgramScheduleAnchor > ( ) ,
Items = new List < PlayoutItem > ( )
} ;
var configRepo = new Mock < IConfigElementRepository > ( ) ;
var televisionRepo = new FakeTelevisionRepository ( ) ;
var artistRepo = new Mock < IArtistRepository > ( ) ;
var builder = new PlayoutBuilder (
configRepo . Object ,
fakeRepository ,
televisionRepo ,
artistRepo . Object ,
_l ogger ) ;
DateTimeOffset start = HoursAfterMidnight ( 0 ) ;
DateTimeOffset finish = start + TimeSpan . FromHours ( 3 0 ) ;
Playout result = await builder . Build ( playout , PlayoutBuildMode . Reset , start , finish ) ;
result . Items . Count . Should ( ) . Be ( 2 8 ) ;
result . Items [ 0 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . Zero ) ;
result . Items [ 0 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 1 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 ) ) ;
result . Items [ 1 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 2 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 2 ) ) ;
result . Items [ 2 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 3 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 3 ) ) ;
result . Items [ 3 ] . MediaItemId . Should ( ) . Be ( 3 ) ;
result . Items [ 4 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 5 ) ) ;
result . Items [ 4 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 5 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 6 ) ) ;
result . Items [ 5 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 6 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 7 ) ) ;
result . Items [ 6 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 7 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 8 ) ) ;
result . Items [ 7 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 8 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 9 ) ) ;
result . Items [ 8 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 9 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 0 ) ) ;
result . Items [ 9 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 1 0 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 1 ) ) ;
result . Items [ 1 0 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 1 1 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 2 ) ) ;
result . Items [ 1 1 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 1 2 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 3 ) ) ;
result . Items [ 1 2 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 1 3 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 4 ) ) ;
result . Items [ 1 3 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 1 4 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 5 ) ) ;
result . Items [ 1 4 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 1 5 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 6 ) ) ;
result . Items [ 1 5 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 1 6 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 7 ) ) ;
result . Items [ 1 6 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 1 7 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 8 ) ) ;
result . Items [ 1 7 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 1 8 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 9 ) ) ;
result . Items [ 1 8 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 1 9 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 2 0 ) ) ;
result . Items [ 1 9 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 2 0 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 2 1 ) ) ;
result . Items [ 2 0 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 2 1 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 2 2 ) ) ;
result . Items [ 2 1 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 2 2 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 2 3 ) ) ;
result . Items [ 2 2 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 2 3 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . Zero ) ;
result . Items [ 2 3 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 2 4 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 1 ) ) ;
result . Items [ 2 4 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
result . Items [ 2 5 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 2 ) ) ;
result . Items [ 2 5 ] . MediaItemId . Should ( ) . Be ( 1 ) ;
result . Items [ 2 6 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 3 ) ) ;
result . Items [ 2 6 ] . MediaItemId . Should ( ) . Be ( 3 ) ;
result . Items [ 2 7 ] . StartOffset . TimeOfDay . Should ( ) . Be ( TimeSpan . FromHours ( 5 ) ) ;
result . Items [ 2 7 ] . MediaItemId . Should ( ) . Be ( 2 ) ;
}
[Test]
public async Task FloodContent_Should_FloodAroundFixedContent_Multiple ( )
{