@ -14,22 +14,27 @@ namespace NzbDrone.Core.Test.MediaFileTests
{
public class MediaFileTableCleanupServiceFixture : CoreTest < MediaFileTableCleanupService >
{
private const string DeletedPath = "ANY FILE WITH THIS PATH IS CONSIDERED DELETED!" ;
private const string DELETED_PATH = "ANY FILE WITH THIS PATH IS CONSIDERED DELETED!" ;
private List < Episode > _episodes ;
[SetUp]
public void SetUp ( )
{
_episodes = Builder < Episode > . CreateListOfSize ( 10 )
. Build ( )
. ToList ( ) ;
Mocker . GetMock < ISeriesService > ( )
. Setup ( s = > s . GetSeries ( It . IsAny < Int32 > ( ) ) )
. Returns ( Builder < Series > . CreateNew ( ) . Build ( ) ) ;
Mocker . GetMock < IDiskProvider > ( )
. Setup ( e = > e . FileExists ( It . Is < String > ( c = > c ! = D eletedPath ) ) )
. Setup ( e = > e . FileExists ( It . Is < String > ( c = > c ! = D ELETED_PATH ) ) )
. Returns ( true ) ;
Mocker . GetMock < IEpisodeService > ( )
. Setup ( c = > c . GetEpisode sByFileId ( It . IsAny < int > ( ) ) )
. Returns ( new List < Episode > { new Episode ( ) } ) ;
. Setup ( c = > c . GetEpisode BySeries ( It . IsAny < int > ( ) ) )
. Returns ( _episodes ) ;
Mocker . GetMock < IDiskProvider > ( )
. Setup ( s = > s . IsParent ( It . IsAny < String > ( ) , It . IsAny < String > ( ) ) )
@ -45,9 +50,11 @@ namespace NzbDrone.Core.Test.MediaFileTests
private void GivenFilesAreNotAttachedToEpisode ( )
{
_episodes . ForEach ( e = > e . EpisodeFileId = 0 ) ;
Mocker . GetMock < IEpisodeService > ( )
. Setup ( c = > c . GetEpisodesByFileId ( It . IsAny < int > ( ) ) )
. Returns ( new List < Episode > ( ) ) ;
. Setup ( c = > c . GetEpisode BySeries ( It . IsAny < int > ( ) ) )
. Returns ( _episodes ) ;
}
private void GivenFileIsNotInSeriesFolder ( )
@ -75,14 +82,14 @@ namespace NzbDrone.Core.Test.MediaFileTests
{
var episodeFiles = Builder < EpisodeFile > . CreateListOfSize ( 10 )
. Random ( 2 )
. With ( c = > c . Path = D eletedPath )
. With ( c = > c . Path = D ELETED_PATH )
. Build ( ) ;
GivenEpisodeFiles ( episodeFiles ) ;
Subject . Execute ( new CleanMediaFileDb ( 0 ) ) ;
Mocker . GetMock < IMediaFileService > ( ) . Verify ( c = > c . Delete ( It . Is < EpisodeFile > ( e = > e . Path = = D eletedPath ) , false ) , Times . Exactly ( 2 ) ) ;
Mocker . GetMock < IMediaFileService > ( ) . Verify ( c = > c . Delete ( It . Is < EpisodeFile > ( e = > e . Path = = D ELETED_PATH ) , false ) , Times . Exactly ( 2 ) ) ;
}
[Test]
@ -116,5 +123,30 @@ namespace NzbDrone.Core.Test.MediaFileTests
Mocker . GetMock < IMediaFileService > ( ) . Verify ( c = > c . Delete ( It . IsAny < EpisodeFile > ( ) , false ) , Times . Exactly ( 10 ) ) ;
}
[Test]
public void should_unlink_episode_when_episodeFile_does_not_exist ( )
{
GivenEpisodeFiles ( new List < EpisodeFile > ( ) ) ;
Subject . Execute ( new CleanMediaFileDb ( 0 ) ) ;
Mocker . GetMock < IEpisodeService > ( ) . Verify ( c = > c . UpdateEpisode ( It . Is < Episode > ( e = > e . EpisodeFileId = = 0 ) ) , Times . Exactly ( 10 ) ) ;
}
[Test]
public void should_not_update_episode_when_episodeFile_exists ( )
{
var episodeFiles = Builder < EpisodeFile > . CreateListOfSize ( 10 )
. Random ( 10 )
. With ( c = > c . Path = "ExistingPath" )
. Build ( ) ;
GivenEpisodeFiles ( episodeFiles ) ;
Subject . Execute ( new CleanMediaFileDb ( 0 ) ) ;
Mocker . GetMock < IEpisodeService > ( ) . Verify ( c = > c . UpdateEpisode ( It . IsAny < Episode > ( ) ) , Times . Never ( ) ) ;
}
}
}