@ -12,34 +12,88 @@ namespace NzbDrone.Core.Test.SeriesStatsTests
[TestFixture]
[TestFixture]
public class SeriesStatisticsFixture : DbTest < SeriesStatisticsRepository , Series >
public class SeriesStatisticsFixture : DbTest < SeriesStatisticsRepository , Series >
{
{
private Series _series ;
private Episode _episode ;
private Episode _episode ;
[SetUp]
[SetUp]
public void Setup ( )
public void Setup ( )
{
{
var series = Builder < Series > . CreateNew ( )
_ series = Builder < Series > . CreateNew ( )
. With ( s = > s . Id = 0 )
. With ( s = > s . Id = 0 )
. With ( s = > s . Runtime = 30 )
. With ( s = > s . Runtime = 30 )
. Build ( ) ;
. Build ( ) ;
series. Id = Db . Insert ( series) . Id ;
_ series. Id = Db . Insert ( _ series) . Id ;
_episode = Builder < Episode > . CreateNew ( )
_episode = Builder < Episode > . CreateNew ( )
. With ( e = > e . Id = 0 )
. With ( e = > e . Id = 0 )
. With ( e = > e . SeriesId = series . Id )
. With ( e = > e . EpisodeFileId = 0 )
. With ( e = > e . Monitored = false )
. With ( e = > e . SeriesId = _series . Id )
. With ( e = > e . AirDateUtc = DateTime . Today . AddDays ( 5 ) )
. With ( e = > e . AirDateUtc = DateTime . Today . AddDays ( 5 ) )
. Build ( ) ;
. Build ( ) ;
}
private void GivenEpisodeWithFile ( )
{
_episode . EpisodeFileId = 1 ;
}
private void GivenMonitoredEpisode ( )
{
_episode . Monitored = true ;
}
private void GivenFile ( )
{
Db . Insert ( _episode ) ;
Db . Insert ( _episode ) ;
}
}
[Test]
[Test]
public void should_get_stats_for_series ( )
public void should_get_stats_for_series ( )
{
{
GivenMonitoredEpisode ( ) ;
GivenFile ( ) ;
var stats = Subject . SeriesStatistics ( ) ;
var stats = Subject . SeriesStatistics ( ) ;
stats . Should ( ) . HaveCount ( 1 ) ;
stats . Should ( ) . HaveCount ( 1 ) ;
stats . First ( ) . NextAiring . Should ( ) . Be ( _episode . AirDateUtc ) ;
stats . First ( ) . NextAiring . Should ( ) . Be ( _episode . AirDateUtc ) ;
}
}
[Test]
public void should_not_have_next_airing_for_episode_with_file ( )
{
GivenEpisodeWithFile ( ) ;
GivenFile ( ) ;
var stats = Subject . SeriesStatistics ( ) ;
stats . Should ( ) . HaveCount ( 1 ) ;
stats . First ( ) . NextAiring . Should ( ) . NotHaveValue ( ) ;
}
[Test]
public void should_not_include_unmonitored_episode_in_episode_count ( )
{
GivenFile ( ) ;
var stats = Subject . SeriesStatistics ( ) ;
stats . Should ( ) . HaveCount ( 1 ) ;
stats . First ( ) . EpisodeCount . Should ( ) . Be ( 0 ) ;
}
[Test]
public void should_include_unmonitored_episode_with_file_in_episode_count ( )
{
GivenEpisodeWithFile ( ) ;
GivenFile ( ) ;
var stats = Subject . SeriesStatistics ( ) ;
stats . Should ( ) . HaveCount ( 1 ) ;
stats . First ( ) . EpisodeCount . Should ( ) . Be ( 1 ) ;
}
}
}
}
}